MOVED错误
redis客户端执行命令,单机模式下,节点发现命令中的槽并非自己负责时,会返回MOVED错误,指引操作人员切换到正在负责该槽的节点。当然,在集群模式下,MOVED错误并不会打印并且会根据MOVED错误自动切换节点。
举个例子:
[root@*** cluster]# ./redis-5.0.4/src/redis-cli -p 7001
127.0.0.1:7001> set test 111
(error) MOVED 6918 192.168.0.111:7003
键test的槽为6918,此时它由节点7003负责。
切换到集群模式下,自动切换到7003,并且赋值成功
127.0.0.1:7001> quit
[root@*** cluster]# ./redis-5.0.4/src/redis-cli -c -p 7001
127.0.0.1:7001> set test 111
-> Redirected to slot [6918] located at 192.168.0.111:7003
OK
192.168.0.111:7003> get test
"111"
ASK错误
客户端向源节点发送命令(eg:关于键key),源节点正在迁移槽时,会向客户端返回ASK错误。
迁移键s(槽3828)来看下ASK错误的产生
192.168.0.111:7003> get s
"haha"
127.0.0.1:7003> cluster keyslot s
(integer) 3828
1)、查看节点信息
127.0.0.1:7003> cluster nodes
85d9276e71faf2a3bfe7c9041d920678c4082623 192.168.0.111:7004@17004 slave e4fee6a90d5b071ad514cd30f8d5d9a1c13947b3 0 1564370710000 8 connected
da006b8e1615f7d338d25bedfb7899eab79e42d2 192.168.0.111:7002@17002 slave 38206edb37cf100e20085da0affaeced4ae42029 0 1564370711165 10 connected
e4fee6a90d5b071ad514cd30f8d5d9a1c13947b3 192.168.0.111:7003@17003 myself,master - 0 1564370710000 8 connected 3828 5462-10922 [3828->-38206edb37cf100e20085da0affaeced4ae42029]
d2a31afbd940004162e94c681cff06862a5af72c 192.168.0.111:7005@17005 master - 0 1564370710164 9 connected 10923-16197 16199-16383
17c67f03e8354f492fbd4a6be1f79a53c23e8507 192.168.0.111:7006@17006 slave d2a31afbd940004162e94c681cff06862a5af72c 0 1564370709163 9 connected
38206edb37cf100e20085da0affaeced4ae42029 192.168.0.111:7001@17001 master - 0 1564370712168 10 connected 0-3827 3829-5461 1619