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

Gee*_*Jan 6 ubuntu redis

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

这里输入链接描述

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

如引用中所述,4GB是32位redis实例的最大值,但我确定我没有达到此目的.我使用多个redis实例,每个实例都低于4GB限制,但我想这不是问题(?)

任何其他原因,比如性能可能,我应该注意什么?

Did*_*zia 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