在服务器上安装多个redis实例是个好主意吗?

正如标题所说。 我正在考虑使用redis创build一个状态服务农场,我想要处理多个“区域” – 这样,如果一个服务closures,只有一个区域应该受到影响。 这看起来似乎是一个好主意,但我宁愿事先知道如果:

  1. 安装redis的多个并行实例是个好主意?
  2. Redis只将数据存储在RAM中?
  3. 典型的redis实例使用多less内存? (我知道这可能是一个反复的问题,但是我喜欢一些猜测)

在Stack Exchange中,我们在单个服务器上运行Redis的多个实例,并且我们从未见过任何问题:

[kbrandt@ny-redis01: ~] ps -e -o vsz,cmd | grep redis-server | sort -nr 15943668 /usr/sbin/redis-server *:6382 14966708 /usr/sbin/redis-server *:6379 7878376 /usr/sbin/redis-server *:6380 2692092 /usr/sbin/redis-server *:6384 1855480 /usr/sbin/redis-server *:6383 1002304 /usr/sbin/redis-server *:6381 377072 /usr/sbin/redis-server *:6385 374780 /usr/sbin/redis-server *:6387 50992 /usr/sbin/redis-server *:6388 50992 /usr/sbin/redis-server *:6378 

内存使用情况实际上取决于您将多less数据放入每个实例。 也可能有一些碎片开销(你可以用redis info命令查看碎片率)。 要估计您的容量,请查看“什么是Redis内存占用?” 从常见问题 。 还要确保将/proc/sys/vm/overcommit_memory为1,如同样的常见问题。

  1. 正如@faker所说,这取决于用例。 如果你只是想在本地caching东西(到应用服务器),它可以工作。 但是,如果您希望具有共享的caching/数据存储function,则可以使用解耦的解决scheme。 此外,耦合通常会被压制,因为它可能会抑制可伸缩性。

  2. 是的 – Redis中的数据完全由RAM存储和提供。 但是,您可以select将数据持久存储。

  3. Redis的进程是非常轻量级的,例如加载时小于2MB。 所有以上使用的RAM都是用于数据存储的,这取决于多个因素,包括:数据量,数据内容,键空间的“模式”以及您使用的数据结构。