Redis 如何管理未使用的缓存键?

Posted

技术标签:

【中文标题】Redis 如何管理未使用的缓存键?【英文标题】:How Redis manage the unused cache keys? 【发布时间】:2020-04-14 01:02:05 【问题描述】:

我的问题很简单

假设我没有为生成的缓存键指定 expires_in 键

假设我为 posts 生成了一个缓存键,键为 "posts/#maximum_record_updated at",没有 expires_in 键

现在我的内容已更改,新密钥已设置并正在与新的"posts/#maximum_record_updated_at"一起使用

缓存现在只调用最新的键

现在的问题是……第一个不再使用且未指定 expires_in 的密钥会发生什么?

它会永远存在吗?如果不再使用,Redis 会设法将其删除?

我知道我只会简单地指定 expires_in,但帖子(在我的情况下)可能会保持 1 周而没有任何变化,可能是几个月、几年,所以我只有在某些事情发生变化时才会生成新的缓存键

我只是担心旧键和任何意外的内存问题

【问题讨论】:

【参考方案1】:

旧的未使用密钥将保留在那里,直到 Redis 达到 maxmemory 使用率。

然后,根据 maxmemory-policy 的配置值,Redis 将停止接受写入命令或开始驱逐键。见https://redis.io/topics/lru-cache

【讨论】:

以上是关于Redis 如何管理未使用的缓存键?的主要内容,如果未能解决你的问题,请参考以下文章

spring-data-redis multiGet 如何处理缓存未命中?

如何使用 Azure Redis 缓存

你说,Redis如何实现键值自动清理?

2016022604 - redis命令介绍

Redis 连接 [缓存] 未配置 laravel 错误

#yyds干货盘点# Redis键过期策略详解