引子
- 哨兵模式:一种集群,能够提高读请求的并发,但是容错方面有问题,如果master同步数据给slave的时候,master挂了,那个slave上的数据就没有master新,数据同步的1-2秒的数据会丢失。
- redis主从复制以及哨兵,可以提高读的并发,但是单个master容量有限,数据达到一定程度会有瓶颈,这个时候可以通过水平扩展为多个master-slave成为集群。
- redis-cluster:可以支持多个master-slave,支持海量数据,实现高可用与高并发。
特点
- 每个节点知道彼此之间的关系,也知道自己的角色,彼此之间可以进行交互和通信。
- 客户端要和集群建立连接的话,只要和其中一台建立关系即可。
- 某个节点挂了,通过超过半数的节点来进行检测,客观下线后主从切换。
- Reds中存在很多的槽节点,用于存储数据。
配置
- 配置文件
# 开启集群模式
cluster-enabled yes
# 每个节点的配置文件,reids自己维护,不用修改
cluster-conf-file noedes-1.conf
# 超时时间,超时认为redis宕机,随后主备切换
cluster-node-timeout 5000
# 开启aof
appendonly yes
- 配置集群
# --cluster-replicas 1 代表有1个从
redis-cli --cluster create 192.168.1.111:6379 192.168.1.112:6379 192.168.1.113:6379 192.168.1.114:6379 192.168.1.115:6379 192.168.1.116:6379 --cluster-replicas 1
# 检测集群的信息
redis-cli --cluster check 192.168.1.111:6379
槽节点
槽节点:用来装数据,主节点有,从节点没有。总数:16384
数据怎么存储:hash(key) % 16384 后匹配槽位。
Springboot配置
spring:
redis:
password: 123456
cluster:
nodes: 192.168.1.111:6379,192.168.1.112:6379,192.168.1.113:6379,192.168.1.114:6379,192.168.1.115:6379,192.168.1.116:6379