Redis占用了所有服务器内存。该怎么办?

时间:2011-12-29 23:13:19

标签: redis

我有一台运行2.4.5版本的Redis服务器,并且将11GB的dump.rdb加载到内存中。 它在EC2上运行在高内存4x超大实例(总内存为70GB)上。 然而,事实证明Redis已经占用了50GB的内存并且正在增长越来越多。我的数据集仍然会变大,可能会增加到20GB左右,所以70GB内存显然不够。你们对如何克服这个限制有什么想法,或者如何让Redis少吃内存?

我已经尝试过redis 32bit,但它在启动时尝试将数据集加载到内存中。

过去曾尝试过max-memory但结果却很奇怪。自从我读到它之后就没有尝试过虚拟内存了/它会被弃用。

1 个答案:

答案 0 :(得分:2)

与评论中的讨论不同,我认为这个问题可以通过编程解决,而不是服务器配置

像redis这样的系统可以很好地分片。一旦设置了方案,就可以很容易地进行扩展。在客户端代码中设置它确实需要一些工作。

例如......

您可以使用模/散列方案在4x实例中对其进行分片。

基本上,如果是md5sum(key) % 4 == 0,它会转到服务器0; if md5sum(key) % 4 == 1,它会转到服务器1等等。

您必须在客户端添加一些逻辑,以确保它访问正确的逻辑。获得记录后,找出它所在的服务器,然后查询该服务器。如果你必须设置一个记录,找出它所假设的服务器,然后在那个中设置它。

关于这一点的好处是它不会影响你的表现。

相关问题