我关注mem的一个盒子,其中我运行了几个redis实例。因此,我正在考虑迁移到Redis 32位,因为这样可以节省我相当多的内存。
使用32位目标编译的Redis每个键使用的内存少得多, 因为指针很小,但这样的实例将限制为4 GB 最大内存使用量。要将Redis编译为32位二进制使用make 32位。 RDB和AOF文件在32位和64位之间兼容 实例(当然还有小端和大端之间),所以你可以 从32位切换到64位,相反,没有问题。
正如引言中所述,4GB是32位redis实例的最大值,但我确定我没有点击它。我使用多个redis实例,每个实例都低于4GB限制,但我想这不是问题(?)
任何其他原因,例如表现可能,我应该留意?
答案 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