Redis基础篇(8)——集群和redis6新特性

一、集群

主从和哨兵是几个服务存相同的数据,整体存储的容量和并发写操作的压力并没有提高。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.相关命令

  1. cluster keyslot [key] 计算key的插槽值
  2. cluster countkeysinslot 12706 计算12706这个槽里有多少key。但是注意每个redis服务端只能查看自己所管范围内的槽
  3. 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(访问控制列表)的缩写,该功能允许根据可以执行的命令和可以访问的键来限制某些连接。

  1. acl list 显示当前有哪些用户,用户的权限信息。
    请添加图片描述

  2. acl cat 查看具体的操作命令
    acl cat string 加参数类型名可以查看类型下具体命令

  3. acl whoami 查看当前用户

  4. 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模式,通过多线程的方式对多个分片进行压测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值