节点取余
haah(key) % nodes
节点伸缩 : 数据节点关系变化,导致数据迁移
迁移数量和添加节点数量有关 : 建议翻倍扩容
一致性哈希
节点伸缩 : 只影响邻近节点,依然有数据迁移
翻倍伸缩 : 保证最小迁移数据和负载均衡
原生命令安装
配置信息
cluster-enabled yes #开启cluster模式
cluster-config-file nodes-6379.conf #生成本地cluster的一个配置文件
cluster-node-timeout 15000 #请求超时时间
cluster-require-full-coverage no #如果集群中有一个节点挂掉,整个集群将不可用 默认yes 这里改成 no,即某节点挂掉,集群依然对外提供服务。
启动服务报错(未分配槽)
127.0.0.1:6379> set yhq qhh
(error) CLUSTERDOWN Hash slot not served
查看cluster信息
[root@localhost redis]# cat nodes-6379.conf
27078cc3a034bb49727799bf40219b0e7cf0071a :0@0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0
[root@localhost redis]# /usr/local/redis/bin/redis-cli
127.0.0.1:6379> cluster nodes
27078cc3a034bb49727799bf40219b0e7cf0071a :6379@16379 myself,master - 0 0 0 connected
127.0.0.1:6379> cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1
cluster_size:0
cluster_current_epoch:0
cluster_my_epoch:0
cluster_stats_messages_sent:0
cluster_stats_messages_received:0