caching - Redis 缓存使用 volitile-lru 抛出 OOM 错误

标签 caching redis lru

为了调试,我们将 Redis 设置为 volitile-lru 和 10mb 的最大内存

我们在电子商务商店中使用 Redis 进行 HTTP 缓存 - 当页面上有并行请求时,错误:

OOM command not allowed when used memory > 'maxmemory'

出现。难道不应该通过将 maxmemory-policy 设置为 volitile-lru 来避免这种情况吗? redis 是否不够快,无法释放内存并设置新内存(每个请求大约有 200-600kb)

最佳答案

来自文档:

volatile-lru:通过首先尝试移除最近较少使用的 (LRU) 键来逐出键,但仅在设置了过期的键中,以便为添加的新数据腾出空间。

您的 key 似乎没有过期。如果是这种情况,您可能需要考虑使用 allkeys-lru 作为驱逐政策。

您还可以使用 INFO stats 查看 evicted_keys 的值是否大于零。

关于caching - Redis 缓存使用 volitile-lru 抛出 OOM 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50123718/

相关文章:

caching - expires、max-age 和 shared max-age 之间有什么区别?

Laravel - 清除所有包含特定字符串的缓存/redis 键

.net - 如何让 SignalR 订阅 Redis channel ?

python - 可以从 functools.lru_cache 替换或删除特定键吗?

java - 从头开始使用双向链表的 LRU 缓存 - moveToHead (Java)

caching - 如何实现动态索引?

在 Grails 中缓存域对象

jquery - 使用 ASP.NET MVC Url.Action 在 JQuery 中生成链接

java - 用于 spring mvc 3 的简单基于 session 的数据缓存

用于 Multi-Tenancy 应用程序的 Redis 命名空间