Redis的槽分配

本文介绍了Redis集群中槽的概念,如何通过CRC16算法计算键的槽位置,以及使用redis-cli进行槽分配和迁移的两种方法:自动reshard和手动迁移。详细步骤包括设置槽状态、迁移键值对等。

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

集群节点的槽分配信息

槽(slots)数据结构实际上是一个二进制数组,数组长度为2048个字节,16384个二进制位。Redis集群通过分片的方式来保存数据库中的键值对。集群的整个数据库被分为16384个槽,即数据库中的所有键都属于这16384个槽中的一个。集群中每个节点可以处理0~16384个槽。

Redis将每个键键名的有效部分使用CRC16算法计算出散列值,然后对16384取余,保证每个值都可以分配到16384个槽中,进而分配到指定的节点中处理。槽分配(即迁移),使用redis-cli进行操作。操作过程中会用到槽的索引(槽1~16384对应索引分别为0~16383)。

查看集群的槽信息

电脑重装系统,不得不使用另一台服务器上的伪集群演示,端口还是7001~7006。

主从信息如下:

[root@*** cluster]# ./redis-5.0.4/src/redis-cli  -p 7001
127.0.0.1:7001> cluster nodes
17c67f03e8354f492fbd4a6be1f79a53c23e8507 192.168.0.111:7006@17006 slave d2a31afbd940004162e94c681cff06862a5af72c 0 1564320601278 6 connected
d2a31afbd940004162e94c681cff06862a5af72c 192.168.0.111:7005@17005 master - 0 1564320602280 3 connected 10923-16383
85d9276e71faf2a3bfe7c9041d920678c4082623 192.168.0.111:7004@17004 slave e4fee6a90d5b071ad514cd30f8d5d9a1c13947b3 0 1564320600000 5 connected
e4fee6a90d5b071ad514cd30f8d5d9a1c13947b3 192.168.0.111:7003@17003 master - 0 1564320600276 2 connected 5461-10922
38206edb37cf100e20085da0affaeced4ae42029 192.168.0.111:7001@17001 myself,master - 0 1564320597000 1 connected 0-5460
da006b8e1615f7d338d25bedfb7899eab79e42d2 192.168.0.111:7002@17002 slave 38206edb37cf100e20085da0affaeced4ae42029 0 1564320601000 4 connected

槽信息:

127.0.0.1:7001> cluster slots
1) 1) (integer) 10923
   2) (integer) 16383
   3) 1) "192.168.0.111"
      2) (integer) 7005
      3) "d2a31afbd940004162e94c681cff06862a5af72c"
   4) 1) "192.168.0.111"
      2) (integer) 7006
      3) "17c67f03e8354f492fbd4a6be1f79a53c23e8507"
2) 1) (integer) 5461
   2) (integer) 10922
   3) 1) "192.168.0.111"
      2) (integer) 7003
      3) "e4fee6a90d5b071ad514cd30f8d5d9a1c13947b3"
   4) 1) "192.168.0.111"
      2) (integer) 7004
      3) "85d9276e71faf2a3bfe7c9041d920678c4082623"
3) 1) (integer) 0
   2) (integer) 5460
   3) 1) "192.168.0.111"
      2) (integer) 7001
      3) "38206edb37cf100e20085da0affaeced4ae4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值