redis集群插槽分配-redis集群管理

2019-03-20 22:26|来源: 网路

使用cluster nodes命令查看当前集群信息
192.168.56.101:6382> cluster nodes
8c45a68a798aed7c1ed5e636f2899709717952c8 192.168.56.101:6380 master - 0 1468819900949 1 connected 0-5460
c9267b81af4bb2c186d07c5ebc777a4b8551069a 192.168.56.101:6381 master - 0 1468819901952 2 connected 5461-10922
16c6db308b37be4d4dd337cd62ea1b676672e096 192.168.56.101:6382 myself,master - 0 0 3 connected 10923-16383


每条信息包含节点的id,IP地址及端口,连接数,插槽数等。

在客户端执行set abc 123命令时,redis是如何将数据保存到集群中的呢?执行步骤:
1、 接收命令set abc 123
2、 通过key(abc)计算出插槽值,然后根据插槽值找到对应的节点。(abc的插槽值为:7638)
3、 重定向到该节点执行命令


整个Redis提供了16384个插槽,也就是说集群中的每个节点分得的插槽数总和为16384。

./redis-trib.rb 脚本实现了是将16384个插槽平均分配给了N个节点。


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

什么是有效部分?
1、 如果key中包含了{符号,且在{符号后存在}符号,并且{和}之间至少有一个字符,则有效部分是指{和}之间的部分;
a) key={hello}_test的有效部分是hello
2、 如果不满足上一条情况,整个key都是有效部分;
a) key=hello_test的有效部分是全部


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


书生参考网络整理


相关问答

更多

使用spring-data-redis集群redis,

用的是什么集群方式,JedisSentinelPool 还是ShardedJedisPool。 如果用的是前者,配置是需要连接sentinel端口的(默认26379),不是连接redis端口(6379)。 或者把spring相关配置文件贴出来一下。 127.0.0.1:26379 127.0.0.1:26380 127.0.0.1:26381

使用spring-data-redis集群redis,

用的是什么集群方式,JedisSentinelPool 还是ShardedJedisPool。 如果用的是前者,配置是需要连接sentinel端口的(默认26379),不是连接redis端口(6379)。 或者把spring相关配置文件贴出来一下。 <!-- 分片式redis集群配置 --> <bean id="jedisShardInfo1" class="redis.clients.jedis.JedisShardInfo"> <constructor-arg name="host" valu ...

redis 集群是哪个版

Redis官方集群(Redis Cluster)推荐4.0以上版本,这个版本对集群做了很多优化和问题修复 其他模式集群 3.2以上即可 redis集群部署过程可参考: Redis集群(Redis Cluster)安装部署

redis 集群是哪个版

Redis官方集群(Redis Cluster)推荐4.0以上版本,这个版本对集群做了很多优化和问题修复 其他模式集群 3.2以上即可 redis集群部署过程可参考: Redis集群(Redis Cluster)安装部署

Redis怎么做集群

为什么集群? 通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取。Redis是一个很好的Cache工具。大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿,在这种情况下,如何正确架构Redis呢? 首先,无论我们是使用自己的物理主机,还是使用云服务主机,内存资源往往是有限制的,scale up不是一个好办法,我们需要scale out横向可伸缩扩展,这需要由多台主机协同提供服务,即分布式多个Redis实例协同运行。 其次,目前硬件资源成本降低,多核CPU, ...

相关文章

更多

最近更新

更多