Redis集群实例比独立实例消耗更多内存?

时间:2017-06-07 02:08:04

标签: redis

在我们的redis群集中,

  • 主节点(带有jemalloc 3.6.0的redis 3.2.7,使用yum,黄线安装)使用2.240G内存
  • 一个从属节点(带有jemalloc 3.6.0的redis 3.2.7,使用yum,cyan line安装)使用了1.735G的内存
  • 从属节点(带有jemalloc 4.0.3的redis 3.2.9,从源代码,橙色线编译)使用1.531G内存
  • 一个独立的奴隶(带有jemalloc 4.0.3的redis 3.2.9,从源,绿线编译)使用1.008G内存

使用较新版本的内存分配器可节省大约12%的内存。这很容易理解。但是,对于集群从属节点而言,与独立实例相比,是什么使内存使用量增加了50%?

enter image description here

1 个答案:

答案 0 :(得分:2)

Redis群集使用内部表,将群集中的每个密钥映射到其指定的插槽,这会增加开销。

你拥有的密钥越多,开销就越大。因此,特别是如果你有许多小键,这是非常明显的,甚至会减慢向RDB /从RDB加载数据的速度。

在redis 4.0中,保存这些键的数据结构已经过优化,可以减少内存并提高速度。供参考 - https://github.com/antirez/redis/issues/3800