您当前的位置: 首页 >  redis

113分布式电商项目 - Redis集群(插槽)

杨林伟 发布时间:2019-07-22 17:32:21 ,浏览量:4

插槽的分配

通过cluster nodes命令可以查看当前集群的信息: 在这里插入图片描述

该信息反映出了集群中的每个节点的id、身份、连接数、插槽数等。

当我们执行set abc 123命令时,redis是如何将数据保存到集群中的呢?执行步骤:

  1. 接收命令set abc 123
  2. 通过key(abc)计算出插槽值,然后根据插槽值找到对应的节点。(abc的插槽值为:7638)
  3. 重定向到该节点执行命令 整个Redis提供了16384个插槽,也就是说集群中的每个节点分得的插槽数总和为16384。./redis-trib.rb 脚本实现了是将16384个插槽平均分配给了N个节点。

注意:如果插槽数有部分是没有指定到节点的,那么这部分插槽所对应的key将不能使用。

插槽和key的关系

计算key的插槽值: key的有效部分使用CRC16算法计算出哈希值,再将哈希值对16384取余,得到插槽值。

什么是有效部分? 1、如果key中包含了{符号,且在{符号后存在}符号,并且{和}之间至少有一个字符,则有效部分是指{和}之间的部分; a)key={hello}_e3mall的有效部分是e3mall

2、如果不满足上一条情况,整个key都是有效部分; a)key=hello_e3mall的有效部分是全部

关注
打赏
1688896170
查看更多评论

杨林伟

暂无认证

  • 4浏览

    0关注

    3183博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0822s