Redis之Cluster
1、数据分布
1.1 节点取余
hash+取余:hash(key)/n(节点数),根据取余结果存储到不同的节点。
缺点:节点扩容导致较大数据迁移,翻倍扩容迁移50%左右,其他扩容迁移更大。
1.2 一致性hash
t虚拟oken(0-232)环,hash(key) 顺时针寻找就近节点存储数据
优点:节点伸缩的时候只迁移相邻节点,翻倍伸缩可以保证最小数据迁移和负载均衡。
1.3 虚拟槽分布
预设虚拟槽,每个节点映射数据槽,CRC16哈希函数,服务端管理节点、槽、数据。
2、Redis Cluster架构
主要包括:节点、meet(节点相互通信)、指派槽、复制
特点:复制、高可用、分片
3、原生安装安装
3.1 配置开启节点
prort ${port}
daemonize yes
dir ''/opt/redis/data/'
dbfilename "dump-${port}.rdb"
logfile "${port}.log"
cluster-enabled yes
cluster-config-file "nodes-${port}.conf"
cluster-node-timeout 15000
cluster-require-full-coverage yes (全部节点健康才提供服务,所有改为 no )
3.2 meet
redis-cli -h ip -p port cluster meet ip:port
3.3 指派槽
redis-cli -h ip -p port cluster addslots{0...5461}
3.4 主从复制
cluster replicate node-id(集群启动时候分配,不会根据从启动重新分配)
4、ruby安装
参考:https://www.cnblogs.com/wukc/p/13386488.html