如何修复 Redis 的“内存泄漏”问题

4
我在dotcloud上使用redis内存存储,但是尽管键过期了,它的used_memory大小从未降下来。使用redis-cli中的flushdb或flushall也不能使used_memory从大约20MB的值下降。我在RedisToGo上也遇到了同样的问题。
有人知道我是如何填满它的吗?我该如何避免这样做?可能有某些字符不能放入redis的键或值中吗?我将其与EM和resque一起使用,这是一个部署在Heroku Rails应用程序中的组件。

1
嗨,我建议发帖INFO命令的输出以提供更多关于您的问题的信息。 - antirez
我不知道这个问题的答案,我只是为了自己的学习而问:我知道许多进程从不将它们的内存释放回操作系统,而是只是重复使用已经分配的内存。Redis进程是否实际上会将内存归还给操作系统?还是只是为了将来重复使用而保留它? - DavidO
1个回答

0

Redis还有一个mem_fragmentation_ratio(例如:2.5),因此使用两个值可能会导致更准确的测量结果。在非常低的used_memory水平下(例如:接近零),碎片化可能会非常高,为了缓解这种情况,您需要手动停止/启动Redis实例。

RedisToGo可能以这种方式报告真实的内存使用情况,即used_memory x mem_fragmentation_ratio的组合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接