Redis中的转向和故障恢复

本文介绍了Redis集群中的MOVED和ASK错误处理,当客户端命令执行遇到非负责节点时,会收到错误提示并自动切换。同时,文章详细阐述了故障恢复过程,当主节点故障时,其他主节点能自动进行故障转移,确保集群稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值