redis-cluster集群
redis3.0引入的分布式存储方案
集群由多个node节点组成,redis数据分布在这些节点之中
在集群之中分为主节点和从节点
集群模式当中,主从一一对应,数据写入和读取与主从模式一样,主负责写,从只能读
集群模式自带哨兵模式,可以自动实现故障切换,但是在故障切换完成之前,整个集群都将不可用,切换完毕之后,集群会立刻恢复
集群模式是按照数据分片:
1、数据分区:是集群的核心功能,每个主都可以对外提供读写的功能,但是数据是一一对应写入主的对应从节点,在集群模式中,可以容忍数据的不完整
2、高可用:集群的主要目的
数据分片的实现:
redis的集群引入了哈希槽的概念
redis集群当中16384个哈希槽位(0-16383)
根据集群当中的主从节点数分配哈希槽位,每个主从节点只负责一部分的哈希槽位
每次读写都涉及到哈希槽位,key通过CRC16校验之后,对16384位取余数,余数值决定数据放入哪个哈希槽位。通过这个值去找到对应槽位所在的节点,然后直接跳转到这个节点进行存取操作
主从复制:主宕机之后,主节点原来负责的哈希槽位将会不可用,需要从节点继续负责原有的哈希槽位,保证集群正常操作
故障切换的过程中会提示集群不可用,切换完成,集群恢复继续工作
redis-cli -h 192.168.233.11 --cluster create 192.168.233.11:6379 192.168.233.12:6379 192.168.233.13:6379 192.168.233.14:6379 192.168.233.15:6379 192.168.233.16:6379 --cluster-replicas 1
replicas 1:规定一个主只有一个从
主从的配合是随机分配的
在集群模式当中,只能选择0库,集群模式不能切换库
Adding replica 192.168.233.15:6379 to 192.168.233.11:6379
Adding replica 192.168.233.16:6379 to 192.168.233.12:6379
Adding replica 192.168.233.14:6379 to 192.168.233.13:6379
(error) MOVED 4768 192.168.233.11:6379:表名客户端尝试读取键值对test1,但是实际槽位在4768,因此集群要求客户端移到4768槽位所在的主机节点,获取数据
monitor :实时监控redis日志的命令
集群流程:
1、集群自带主从和哨兵
2、每个主从节点之间互相隔离,可以容忍数据的不完整。目的是高可用
3、以哈希槽位决定每个节点的读写操作,在创建keys时,系统已经分配好了指定槽位
4、出现MOVED不是报错,只是提醒客户端去分配的槽位节点获取数据
proxy_responses 1;在集群之中只要有一个节点响应,然后代理服务器就会把响应传递给客户端,可以增加整个系统的稳定性