Redis 占用大量内存,并且持续增加,直到我重新启动它

Redis 占用大量内存,并且持续增加,直到我重新启动它

我有一个简单的 redis 安装,它似乎以稳定的速度慢慢地消耗越来越多的内存,直到我重新启动 redis 服务器。

我使用 redis 作为缓存层,目前我没有为我的密钥设置过期时间,因为我认为没有必要。我以为 redis 会丢弃旧密钥或类似的东西 - 但显然这并没有发生。

处理这种情况的最佳方法是什么,我应该在密钥上设置一个较短的过期时间吗,或者 redis 中是否内置了一些功能来使旧密钥过期,以便为新密钥腾出空间?

先谢谢了!

答案1

Redis 的旧标语是:“一个用 ANSI-C 编写的、适用于 Posix 系统的具有内置网络接口的持久性键值数据库”。

我认为密钥默认是持久的。您必须对希望一段时间后消失的密钥设置 EXPIRE。正如 womble 指出的那样,它不是 memcached。

命令参考:http://redis.io/topics/expire

答案2

您可以maxmemory在 redis conf 中设置配置变量,然后将 设置maxmemory-policyallkeys-lru或 ,allkeys->random这将允许从数据库中删除密钥并使 redis 充当缓存。由于您将其用作缓存,因此您可以注释掉所有save行,这样 redis 就不会保存到磁盘。

这可能是最简单的方法,您不必切换到 memcached,我建议allkeys-lru允许删除任何密钥,首先删除最近最少使用的密钥。

相关内容