redis手动配置集群

# 进入多个redis环境
nix-shell -p redis ruby neovim git
# 创建多个配置文件,对应多个不同的服务器, ./redis-conf[n]/redis.conf, 中括号里面的对应节点数
# 原文 更多配置请查看官方文档
cluster-enabled yes
cluster-node-timeout 15000
cluster-config-file nodes-7001.conf
# 进入对应文件夹, 启动多个
redis-server ./redis0.conf --port 7000
redis-server ./redis0.conf --port 7001
redis-server ./redis0.conf --port 7002

# 查看运行情况 ps -ef|grep redis
jcleng    4583  1354  0 09:55 tty2     00:00:00 redis-server *:7000 [cluster]
jcleng    4651  2945  0 09:56 tty3     00:00:00 redis-server *:7001 [cluster]
jcleng    4716  4658  0 09:56 tty4     00:00:00 redis-server *:7002 [cluster]

# 进行建立连接和握手
redis-cli -p 7000
# 进入7000的redis里面, 运行命令,成功会输出OK
cluster meet 127.0.0.1 7001
cluster meet 127.0.0.1 7002

# 查看节点状态
cluster nodes
# 查看集群运行状态, 显示cluster_state:fail就是集群未运行
cluster info

# 分配槽位 16384要分配完, 0 - 16383 一共16384个, 主库需要,从库不需要, 这里只设置一个主库
redis-cli -p 7000 cluster addslots {0..16383}
# redis-cli -p 7000 cluster addslots {0..5461}
# redis-cli -p 7001 cluster addslots {5462..10922}
# redis-cli -p 7002 cluster addslots {10923..16383}
# 再次查看分配
redis-cli -p 7000 cluster nodes
redis-cli -p 7000 cluster info

# 配置高可用,主从复制
# 把7001,7002设为7000的从库
redis-cli -p 7001 cluster replicate 8ca72930806803efb1a48f868f80b29009302628
redis-cli -p 7002 cluster replicate 8ca72930806803efb1a48f868f80b29009302628
redis-cli -p 7000 cluster nodes

# 现在写主库,从库就会更新对应数据
# 从库挂了之后,二次启动会数据同步