6

我关心 mem 的一个盒子,我在这个盒子上运行了几个 redis 实例。因此,我正在考虑迁移到 Redis 32 位,因为这可以为我节省不少内存。

此处输入链接描述

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

正如报价中所说,4GB 是 32 位 redis 实例的最大值,但我确保我不会遇到这个问题。我确实使用了多个 redis 实例,每个实例都低于 4GB 限制,但我想这不是问题(?)

任何其他原因,例如可能的性能,我应该注意吗?

4

1 回答 1

6

使用多个 32 位 Redis 实例通常效果很好。但是,您需要考虑一些缺点:

  • 大多数人运行 64 位版本,因此 32 位版本的测试和部署要少得多。它降低了可靠性,因为它增加了您遇到未检测到的错误的可能性。

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

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

您可能还想阅读 Salvatore 所说的:

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

于 2013-07-07T08:11:47.650 回答