随着咱们系统业务量的增加,单机Redis已经不能知足需求了。假设咱们的系统要缓存的数据已经远远超出服务器的内存,就须要将这些数据以分片的形式存储到不一样的服务器上。node
数据冗余备份、故障自动转移、核心解决了单节点并发压力问题redis
port ${port} #端口 cluster-enabled yes #开启集群模式 cluster-config-file nodes-${port}.conf #修改集群配置文件 cluster-node-timeout 15000 #设置节点超时时间 appendonly yes #设置持久化为aof模式 appendfilename appendonly-${port}.aof #设置每一个持久化文件名 dbfilename dump-${port}.rdb #快照文件名 pidfile /var/run/redis_${port}.pid #进程文件名 cluster-require-full-coverage yes # bind 0.0.0.0
.redis-server ./redis-${port}.conf
redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1 #参数1表示1主1从 # 7001为7004的主节点 # 7002为7005的主节点 # 7003为7006的主节点
输入yes后,成功完成集群配置算法
redis-cli --cluster info 192.168.3.200:7001 # 这里链接任意一个节点均可以
链接任意一个节点均可以操做缓存
此时咱们发现,Redis会根据key去进行计算,无论是查询仍是添加都会分配到对应的槽中bash
redis-server ./redis-7007.conf
redis-cli --cluster add-node 127.0.0.7:7007 127.0.0.1:7001 # 前面的参数表示新增的节点ip:port 后面的参数表示已经存在的集群节点的ip:port
此时咱们查看节点信息服务器
虽然7007节点已经加入了集群,可是没有分配任何的数据槽并发
redis-cli --cluster reshard 192.168.3.200:7001
这里它会首先提示咱们须要转移多少个槽,咱们输入3000app
而后会提示咱们须要哪一个id接收,咱们输入使用 info 命令看到的7007节点的id 7e37f7ecde1a7bdc434ddc564662e47f3d3875e6分布式
而后提示咱们从哪些节点分配出这些槽,咱们输入allui
而后输入 yes 就能够完成节点槽的从新分配