首页 > 数据库 >为什么 Redis Cluster 是16384个槽位

为什么 Redis Cluster 是16384个槽位

时间:2024-01-27 09:45:18浏览次数:21  
标签:插槽 Redis Cluster 16384 节点 1000

为什么 Redis Cluster 是16384个槽位

正常的心跳数据包携带节点的完整配置,它能以幂等方式来更新配置。如果采用 16384 个插槽,占空间 2KB (16384/8);如果采用 65536 个插槽,占空间 8KB (65536/8)。
Redis Cluster 不太可能扩展到超过 1000 个主节点,太多可能导致网络拥堵。
16384 个插槽范围比较合适,当集群扩展到1000个节点时,也能确保每个master节点有足够的插槽

1.心跳数据包大小以及网络带宽
因为Redis每秒都会发送一定数量的心跳包,如果消息头是8k,未免有些太大了,浪费网络资源。

上面提过,Redis的集群主节点数量一般不会超过1000个。集群中节点越多,心跳包的消息体内的数据就越多,如果节点过多,也会造成网络拥堵。因此Redis的作者不建议Redis Cluster的节点超过1000个,对于节点数在1000个以内的Redis Cluster,16384个槽位完全够用。


2. 压缩位图以减少网络流量

Redis主节点的哈希槽信息是通过bitmap存储的,在传输过程中,会对bitmap进行压缩,bitmap的填充率越低,压缩率越高。

bitmap 填充率 = slots / N (N表示节点数)。

也就是说slots越小,填充率就会越小,压缩率就会越高,传输效率就会越高。

综合下来,从心跳包的大小、网络带宽、心跳并发、压缩率等维度考虑,16384 个插槽更有优势且能满足业务需求。

标签:插槽,Redis,Cluster,16384,节点,1000
From: https://www.cnblogs.com/hld123/p/17991102

相关文章

  • redis 7.07升级导致spring boot连接不上
    Causedby:org.springframework.data.redis.connection.PoolException:Couldnotgetaresourcefromthepool;nestedexceptionisio.lettuce.core.RedisConnectionException:Unabletoconnect升级springboot、升级jedis<parent> <groupId>org.springfram......
  • Redis安全机制
    如果使用官方配置(如Redis5.0.5配置),新启动的Redis服务,只能在本地访问,其他服务无法与之通信如果通过Docker安装的Redis,宿主机也无法与容器通信原因是Redis默认开启了安全保护机制https://redis.io/docs/management/security/绑定IP支持ipv4和ipv6地址保护模式开......
  • SpringBoot整合Redis
    1、pom.xml中引入redis依赖<!--Redis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>2、application.yml配置文件中配置Redis连接参数等s......
  • go-zero开发入门-初始化cache.ClusterConf示例
    cache.ClusterConf的定义如下://CacheConfisanaliasofClusterConf.typeCacheConf=ClusterConftype( //AClusterConfistheconfigofaredisclusterthatusedascache. ClusterConf[]NodeConf //ANodeConfistheconfigofaredisnodethatuseda......
  • redis未授权
    redis未授权搭建环境ubuntu安装并启动redis服务wgethttp://download.redis.io/releases/redis-3.2.11.tar.gz#下载压缩包tarxzfredis-3.2.11.tar.gz#解压cdredis-3.2.11#进入目录make#编译执行cdsrccpredis-server/usr/bin/cpredis-cli/usr/bin/#把上面两......
  • Redis缓存优化项目
    Redis数据库基础Redis数据库概述Redis是一个基于内存的key-value结构数据库,即非关系型数据库(NoSql)数据库并不是要取代关系型数据库,而是关系型数据库的一种补充。Redis是互联网技术领域使用最为广泛的存储中间件,他是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方......
  • Redis篇-redis使用场景-缓存-缓存雪崩-04
    1缓存雪崩缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。解决方案:给不同Key的TTL添加随机值;利用Redis集群提高服务的可用性;哨兵模式、集群模式给缓存业务添加降级限流策略;ngxin或springcloudGateway给业务添加......
  • go-zero配置DB的redis缓存
    配置定义:#catinternal/config/config.gopackageconfigimport( "github.com/zeromicro/go-zero/rest" "github.com/zeromicro/go-zero/core/stores/cache")typeConfigstruct{ rest.RestConf CacheRediscache.CacheConf}对应的配置文件:#cat......
  • Redis实战篇
    实战篇Redis优秀博客黑马点评项目学习笔记(15w字详解,堪称史上最详细,欢迎收藏)-CSDN博客Redis实战篇|Kyle'sBlog(cyborg2077.github.io)开篇导读hutol工具使用对象bean和JsonStr互转//功能:javabean转jsonstr用途:存入到redisStringjsonstr=JSONUtil.toJsonSt......
  • 基于Redis的Stream类型的完美消息队列解决方案(全)
    1概述2追加新消息,XADD,生产消息3从消息队列中获取消息,XREAD,消费消息4消息ID说明5消费者组模式,consumergroup6Pending等待列表7消息转移8坏消息问题,DeadLetter,死信问题9信息监控,XINFO10命令一览11Stream数据结构,RadixTree,基数树12相关产品1概述Redis5.......