1,安装好一个redis实例
2,设置redis.conf文件
比如你要搭建两个redis实例,那么这时候将redis.conf复制两份出来
cp redis.conf redis-9001.conf
cp redis.conf redis-9002.conf
并且修改redis-9001.conf和redis-9002.conf两个文件对应的端口号
port 6380 // 修改对应的9001或9002端口
daemonize yes
cluster-enabled yes
cluster-config-file nodes_6380.conf // 修改成对应的nodes_9001.conf/nodes_9002.conf
3,测试新增的9001和9002端口是否可用
执行命令:
./redis-cli -c -p 9002
127.0.0.1:9002> ok //则创建成功
4,利用cluster meet命令,与9001、9002建立链接。
127.0.0.1:6379> cluster meet 127.0.0.1 9001
ok
127.0.0.1:6379> cluster meet 127.0.0.1 9002
ok
5,cluster nodes 检查链接情况,以下示例为创建成功
127.0.0.1:6379> cluster nodes
2d993bfb6d1d296021f467772b3a039982f0e81b 127.0.0.1:9001 master - 0 1563609909512 1 connected 5001-10000
6a6a61f84bf0f47dd6b4ac5d6fe44e6fd41549df 127.0.0.1:9002 master - 0 1563609910514 2 connected 10001-16383
e9b992990ab694b602d38cca25b7fa97eab601e9 127.0.0.1:6379 myself,master - 0 0 0 connected 0-5000
6,cluster info 检查redis集群是否启动
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:449
cluster_stats_messages_received:0
7,分配槽点
上面state为fail是因为我们还未给节点分配槽位,官方规定只有16384个槽位全部分配完集群才能正常工作,节点才能接受请求,state状态才会为ok。
我们刚刚是三个节点,16384个槽位全部分配到这个槽位里即可,例如:
redis-cli -c -p 6379 cluster addslots {0..5000}
redis-cli -c -p 9001 cluster addslots {5001..10000}
redis-cli -c -p 9002 cluster addslots {10001..16383}
继续用cluster info 命令查看
127.0.0.1:6379> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:3
cluster_size:3
cluster_current_epoch:2
cluster_my_epoch:0
cluster_stats_messages_sent:6433
cluster_stats_messages_received:5984
127.0.0.1:6379>
显示我们分配成功,并且state状态也是ok,这时我们就可以利用我们的集群啦
8,测试
./redis-cli -c -p 6379
127.0.0.1:6379> set q 1
-> Redirected to slot [11958] located at 127.0.0.1:9002
OK
127.0.0.1:9002> get q
"1"
127.0.0.1:9002>
可以看到,redis集群会自动计算key落在那个槽位,然后自动跳到目标节点去执行命令。
9,利用cluster keyslot 可以查看key属于那个槽位。
127.0.0.1:9002> cluster keyslot q
(integer) 11958
11958槽位是位于我们的9002节点。
注意:当创建集群的时候需要把节点的key全部清空(否则后面分配槽位的时候会提示该槽位已经给占用导致分配不进去)否则会报错可以用以下命令清空:
执行flushall、flushdb、cluster reset指令: