redis实战第十二篇 redis cluster请求重定向

在集群模式下,redis在接收到键任何命令时会先计算该键所在的槽,如果改键所在的槽位于当前节点,则直接执行命令,如果改键位于其它节点,则不执行该命令,返回重定向信息。
比如hello这个键槽866上,而曹866位于31节点上,假设在32上执行get hello ,则会返回重定向信息。

127.0.0.1:6380> get hello
(error) MOVED 866 192.168.0.31:6380

重定向信息中包含了键所在的槽,已经槽所在的节点信息。

1.查找键所在的节点信息
可以通过以下命令获取键所在的槽信息

127.0.0.1:6380> cluster keyslot hello
(integer) 866

再通过cluster nodes获取槽所在节点的信息,就可以知道键所在的节点信息。

2.使用-c参数来自动重定向
在使用redis-cli时,可以加上-c参数,这样redis会自动帮我们连接到正确的节点执行命令。

[root@kafka32 ~]# redis-cli -a password -p 6380 -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6380> get hello
-> Redirected to slot [866] located at 192.168.0.31:6380
"cluster"

3.hash_tag
如果键中包含{},则集群在计算槽时会使用{}内的内容,而不是整个键,{}内的内容又称为hash_tag。它提供不同的键拥有相同的slot功能,通常用于redis IO优化。

[root@kafka32 ~]# redis-cli -a 1234@abcd -p 6380 -c
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
不加{},age和id会被放到不同的槽中
192.168.02.31:6380> set user:info:age 18
-> Redirected to slot [8325] located at 192.168.0.32:6380
OK
192.168.0.32:6380> set user:info:id "1234121"
-> Redirected to slot [15358] located at 192.168.0.33:6380
OK

加上{},所有的键都位于同一个槽中
192.168.0.32:6380> set user:{info}:id "232132"
OK
192.168.0.32:6380> set user:{info}:age 20
OK
192.168.0.32:6380> set user:{info}:name peter
OK
192.168.0.32:6380> set user:{info}:email "132132@163.com"
OK
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值