正如标题所述。我正在考虑使用 redis 创建一个状态服务场,我想处理多个“区域” - 这样,如果服务出现故障,则只会影响一个区域。这最初似乎是一个好主意,但我宁愿事先知道:
- 并行安装多个 redis 实例是个好主意吗?
- Redis 仅将数据存储在 RAM 中?
- 一个典型的 redis 实例使用多少 RAM?(我意识到这可能是一个反问,但我希望得到一些估计)
答案1
在 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
内存使用量实际上取决于您在每个实例中放入了多少数据。还可能存在一些碎片开销(您可以使用 redis 命令查看碎片率info
)。要估算容量,请查看常见问题解答中的“Redis 内存占用是多少?”。另外请确保设置/proc/sys/vm/overcommit_memory
为 1,如同一常见问题解答中所述。
答案2
正如 @faker 所说,这取决于用例。如果您只想在本地(应用服务器)缓存内容,那么它可以工作。但是,如果您希望拥有共享缓存/数据存储功能,我会选择解耦解决方案。此外,耦合通常是不受欢迎的,因为它可能会抑制可扩展性。
是的 - Redis 中的数据完全通过 RAM 存储和提供。不过,您也可以选择将数据保存到持久存储中。
Redis 的进程非常轻量,即加载时小于 2MB。超过该值的任何 RAM 都用于数据存储,并且取决于多种因素,包括:数据量、数据内容、键空间的“模式”以及您使用的数据结构。