一.概念
1.分片
集群中的每个redis实例都被认为是整个数据的一个分片,官方建议是最大1000个
2.槽位
redis集群有16384个哈希槽,每个key通过CRC16校验后通过总分片数量,对16384取模来决定放哪个槽,集群的每个节点负责一部分hash槽位。
3.槽位算法 哈希取余,一致性哈希算法,哈希槽
二.集群部署
1.3主3从redis集群配置
1) 3台虚拟机,各自创建 mkdir -p /myredis/cluster
2) 新建6个独立的redis实例,次处只列出一个配置,其他配置改相应的端口号就可以
bind 0.0.0.0
daemonize yes
protected-mode no
port 6381
logfile "/myredis/cluster/cluster6381.log"
pidfile /myredis/cluster/cluster6381.pid
dir /myredis/cluster
dbfilename dump6381.rdb
appendonly yes
appendfilename "appendonly6381.aof"
requirepass 123456
masterauth 123456cluster-enabled yes
cluster-config-file nodes-6381.conf
cluster-node-timeout 5000
然后分别在三台服务器上启动6个实例
# 192.168.3.128
redis-server /myredis/cluster/redisCluster6381.conf
redis-server /myredis/cluster/redisCluster6382.conf
# 192.168.3.129
redis-server /myredis/cluster/redisCluster6383.conf
redis-server /myredis/cluster/redisCluster6384.conf
#192.168.3.130
redis-server /myredis/cluster/redisCluster6385.conf
redis-server /myredis/cluster/redisCluster6386.conf
3) 通过redis-cli 命令为6台机器构建集群关系,
redis-cli -a 123456 --cluster create --cluster-replicas 1 192.168.3.128:6381 192.168.3.128:6382 192.168.3.129:6383 192.168.3.129:6384 192.168.3.130:6385 192.168.3.130:6386
--cluster-replicas 1 表示为每个maser创建一个slave节点
成功之后如下:
4) 链接进入6381作为切入点,查看并检验集群状态
info replication
cluster info
cluster nodes
2.3主3从redis集群读写
1) 登录
redis-cli -a 123456 -p 6381 -c
2) 查看某个key属于对应的槽位值
cluster keyslot 键名称
3.主从容错切换迁移案例
4.主从扩展案例
5.主从降容案例