如上所述,在消息头中,最占空间的是myslots[CLUSTER_SLOTS/8] 。当槽位为65536时,这块的大小是: 65536÷8÷1024=8kb 因为每秒钟,redis节点需要发送一定数量的ping消息作为心跳包,如果槽位为65536,这个ping消息的消息头太大了,浪费带宽 。
(2)redis的集群主节点数量基本不可能超过1000个 。
如上所述,集群节点越多,心跳包的消息体内携带的数据越多 。如果节点过1000个,也会导致网络拥堵 。因此redis作者,不建议redis cluster节点数量超过1000个 。那么,对于节点数在1000以内的redis cluster集群,16384个槽位够用了 。没有必要拓展到65536个 。
(3)槽位越小,节点少的情况下,压缩比高
Redis主节点的配置信息中,它所负责的哈希槽是通过一张bitmap的形式来保存的,在传输过程中,会对bitmap进行压缩,但是如果bitmap的填充率slots / N很高的话(N表示节点数),bitmap的压缩率就很低 。如果节点数很少,而哈希槽数量很多的话,bitmap的压缩率就很低 。
Redis 集群会有写操作丢失吗? 为什么?Redis 并不能保证数据的强一致性,这意味这在实际中集群在特定的条件下可能会丢失写操
作 。
Redis 集群方案应该怎么做?都有哪些方案?1.twemproxy,大概概念是,它类似于一个代理方式,使用时在本需要连接 redis 的地方改为连接 twemproxy,它会以一个代理的身份接收请求并使用一致性 hash 算法,将请求转接到具体 redis,将结果再返回 twemproxy 。
缺点: twemproxy 自身单端口实例的压力,使用一致性 hash 后,对 redis 节点数量改变时候的计算值的改变,数据无法自动移动到新的节点 。
2.codis,目前用的最多的集群方案,基本和 twemproxy 一致的效果,但它支持在 节点数量改变情况下,旧节点数据可恢复到新 hash 节点
3.redis cluster3.0 自带的集群,特点在于他的分布式算法不是一致性 hash,而是 hash 槽的概念,以及自身支持节点设置从节点 。具体看官方文档介绍 。
为什么要做 Redis 分区?分区可以让 Redis 管理更大的内存,Redis 将可以使用所有机器的内存 。如果没有分区,你
最多只能使用一台机器的内存 。分区使 Redis 的计算能力通过简单地增加计算机得到成倍提
升,Redis 的网络带宽也会随着计算机和网卡的增加而成倍增长 。
Redis 分区有什么缺点?涉及多个 key 的操作通常不会被支持 。例如你不能对两个集合求交集,因为他们可能被存
储到不同的 Redis 实例(实际上这种情况也有办法,但是不能直接使用交集指令) 。
同时操作多个 key,则不能使用 Redis 事务.
分区使用的粒度是key,不能使用一个非常长的排序key存储一个数据集(The partitioning
granularity is the key, so it is not possible to shard a dataset with a single huge
key like a very big sorted set) .
当使用分区的时候,数据处理会非常复杂,例如为了备份你必须从不同的 Redis 实例和主
机同时收集 RDB / AOF 文件 。
分区时动态扩容或缩容可能非常复杂 。Redis 集群在运行时增加或者删除 Redis 节点,能
做到最大程度对用户透明地数据再平衡,但其他一些客户端分区或者代理分区方法则不支持
这种特性 。然而,有一种预分片的技术也可以较好的解决这个问题 。
Redis 与其他 key-value 存储有什么不同?Redis 有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库
的进化路径 。Redis 的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外
的抽象 。
Redis 运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡
内存,应为数据量不能大于硬件内存 。在内存数据库方面的另一个优点是,相比在磁盘上
相同的复杂的数据结构,在内存中操作起来非常简单,这样 Redis 可以做很多内部复杂性
【解决了redis的这些问题,你就是redis高手】很强的事情 。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需
要进行随机访问
Redis 的内存用完了会发生什么?如果达到设置的上限,Redis 的写命令会返回错误信息(但是读命令还可以正常返回 。) 或
者你可以将 Redis 当缓存来使用配置淘汰机制,当 Redis 达到内存上限时会冲刷掉旧的内容 。
Redis 是单线程的,如何提高多核 CPU 的利用率?可以在同一个服务器部署多个 Redis 的实例,并把他们当作不同的服务器来使用,在某些时
推荐阅读
- 铸铁锅干烧太久怎么办 铁锅干烧了很久怎么办
- 了解百度的高级搜索让你需要的数据呈现在你的面前
- 电脑开机密码忘记怎么办?这个办法简直神了
- 梦见汽车掉到下面摔坏了 梦见自己的汽车从高处掉下来摔坏了
- 你中招了吗 论泡茶法
- 梦到水干了抓了很多鱼 梦见水快干了有很多鱼
- 梦见手指头破了流血不止 梦见手指头破了流血了是什么意思
- 周公解梦梦见自己车被砸 做梦梦见自己车被砸了是什么预兆
- 梦见打蛇打不死最后还跑了 梦见蛇打不死又跑了
- 如何了解款红茶的品质
