有什么理由不使用Redis 32bit(而不是64位),除了4GB限制?

时间:2013-07-06 22:47:21

标签: ubuntu redis

我关注mem的一个盒子,其中我运行了几个redis实例。因此,我正在考虑迁移到Redis 32位,因为这样可以节省我相当多的内存。

来自enter link description here

  

使用32位目标编译的Redis每个键使用的内存少得多,   因为指针很小,但这样的实例将限制为4 GB   最大内存使用量。要将Redis编译为32位二进制使用make   32位。 RDB和AOF文件在32位和64位之间兼容   实例(当然还有小端和大端之间),所以你可以   从32位切换到64位,相反,没有问题。

正如引言中所述,4GB是32位redis实例的最大值,但我确定我没有点击它。我使用多个redis实例,每个实例都低于4GB限制,但我想这不是问题(?)

任何其他原因,例如表现可能,我应该留意?

1 个答案:

答案 0 :(得分:5)

使用多个32位Redis实例通常运行良好。但是您需要考虑一些缺点:

  • 大多数人都运行64位版本,因此32位版本的测试和部署要少得多。它使它不太可靠,因为它增加了你可能遇到未检测到的bug。

  • 某些操作在32位中效率较低。例如,BITOP,BITCOUNT操作在64位CPU上运行时应该更有效。

  • 很难设置内存限制。设置maxmemory参数很棘手,因为您还必须考虑的不仅仅是数据的大小(还有内部通信缓冲区,主/从复制缓冲区,I / O缓冲区等等)。如果你太乐观了(例如,如果你将maxmemory设置得太接近4 GB),当Redis内存饱和时,你会发生随机崩溃。

您也可以阅读Salvatore所说的内容:

https://groups.google.com/forum/#!topic/redis-db/ThCVJdMrqCE