一、集群
主从和哨兵是几个服务存相同的数据,整体存储的容量和并发写操作的压力并没有提高。redis集群实现了对redis的水平扩容,将整个数据库分布存储在每一个节点中。
1.配置
① 在配置文件中加入:
cluster-enabled yes // 打开集群模式
cluster-config-file xxx-6379.conf //设置节点配置文件名
cluster-node-timeout 15000 // 设置节点失联时间,超过该时间(毫秒),集群自动进行主从切换。
② 启动redis服务后,会自动生成名为xxx-6379.conf的配置文件。
③ 进入到redis的安装目录,进去src目录下。执行一面命令:
redis-cli --cluster create --cluster-replicas 1 -a 密码 192.168.0.100:6379 192.168.0.101:6381
-cluster-replicas 1表示以最简单的方式配置集群
④ 连接时采用redis-cli -c -p 6379以集群的方式连接。
⑤ 在客户端中输入cluster nodes 可以查看集群信息
2.分配原则
分配原则尽量保证每个主数据库运行在不同的IP地址,每个从库和主库不在一个IP地址上。
3.slots
一个Redis集群包含16384个插槽(hash slot),数据库中每个键都属于这16384个插槽其中一个。
集群使用公式CRC16(key)%16384来计算键属于哪个槽,其中CRC16(key)用于计算key的CRC16校验和。
集群中每个结点负责处理一部分插槽。
4.相关命令
cluster keyslot [key]计算key的插槽值cluster countkeysinslot 12706计算12706这个槽里有多少key。但是注意每个redis服务端只能查看自己所管范围内的槽cluster getkeysinslot [slot] [count]返回count个slot槽中的键。
4.故障恢复
如果主节点挂掉,从节点自动升为主节点。后续如果挂掉的主节点恢复,挂掉的主节点会变为从节点。
如果某一段插槽的主从都挂掉。而cluster-require-full-coverage为yes,那么整个集群都挂掉。如果为no,那么该插槽的数据全都不能使用,也不能存储。
二、Redis6新特性
1. ACL
在redis5之前,redis安全规则只有密码控制,还有通过rename来调整高危命令比如flusdb,keys *,shutdown等。redis6则提供了ACL的功能对用户进行更细粒度的权限控制。
redis acl是Access Control List(访问控制列表)的缩写,该功能允许根据可以执行的命令和可以访问的键来限制某些连接。
-
acl list显示当前有哪些用户,用户的权限信息。

-
acl cat查看具体的操作命令
acl cat string加参数类型名可以查看类型下具体命令 -
acl whoami查看当前用户 -
acl setuser user1创建新用户默认权限
acl setuser user2 on >密码 ~cached:* +get添加了一个新用户,只能对cached:开头的key做get操作。
2.IO多线程
Redis的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程。
多线程IO默认不开启,需要再配置文件中配置:·io-threads-do-reads ys,io-threads 4
3.支持Cluster
老板的redus想要搭集群需要单独安装ruby环境,redis5将redis-trib.rb的功能集成到了redis-cli。另外官方redis-benchmark功能开始支持cluster模式,通过多线程的方式对多个分片进行压测。
1073

被折叠的 条评论
为什么被折叠?



