1. 首页
  2. 面试专题
  3. 文章列表
多家公司 后端开发 Redis 2026-06-14

Redis 过期和淘汰策略面试怎么讲:缓存为什么会突然不见

Redis 缓存失效不只是设置过期时间。面试里要讲清过期删除、内存淘汰、批量失效和业务兜底。

Redis 面试里,缓存穿透、击穿、雪崩经常被问,但另一个容易被忽略的细节是过期和淘汰。面试官可能会问:缓存设置了过期时间,Redis 是立刻删除吗?内存满了会怎样?为什么线上某些缓存突然不见?大量 key 同时过期会有什么风险?

这些问题背后,考的是你是否理解缓存不是无限稳定的存储。

过期删除不是精确闹钟

给缓存设置过期时间,并不意味着时间一到就一定立刻删除。Redis 通常会在访问时发现过期再删除,也会定期抽样检查一批过期键。这样做是为了控制删除成本。如果每个键都设置一个精确闹钟,系统开销会很大。

面试里可以用简单话解释:过期时间是告诉 Redis 这份数据最晚不应该再被当作有效数据使用,但实际清理可能通过访问触发和后台抽查完成。

淘汰策略和过期不同

过期是键到了时间失效;淘汰是内存不够时,Redis 根据策略主动删一些键。比如可能删最近少用的数据,也可能只在设置了过期时间的键里选择。不同策略适合不同业务。

如果缓存里放的是热点数据,淘汰策略不合理,可能把关键缓存删掉,导致大量请求回源数据库。面试里可以讲:缓存不是只要写进去就安全,还要监控内存使用、命中率和淘汰次数。

批量过期会造成雪崩

如果大量缓存使用相同过期时间,比如活动开始前批量预热,30 分钟后一起过期,就可能导致大量请求同时打到数据库。这就是缓存雪崩的一种表现。常见处理方式是给过期时间加随机分散,热点数据主动续期或后台刷新。

但也不能简单把过期时间设得很长。价格、库存、权限这类数据如果旧太久,会影响业务正确性。缓存时间要和业务容忍度绑定。

项目回答方式

可以这样回答:我们对读多写少的配置和详情数据设置缓存,但不会所有键使用同一个过期时间,而是在基础时间上加随机分散,避免集中失效。热点数据会通过后台任务刷新,Redis 内存使用、命中率和淘汰次数都有监控。如果缓存失效,接口可以回源数据库,但会配合限流和降级,避免瞬时压力打穿数据库。

Redis 过期和淘汰策略面试的重点,不是背几个策略名字,而是说明缓存失效时业务和数据库如何保持可控。

缓存消失的几种原因

线上说“缓存没了”,不一定只有过期。可能是到了 TTL,被内存淘汰,被代码删除,被批量刷新覆盖,也可能是不同环境或 key 规则不一致。面试时把原因拆开,排查才像真实项目。

现象可能原因怎么确认应对方式
到点后大量失效TTL 设置过于集中抽样看过期时间分布加随机过期和预热
内存压力后 key 不见淘汰策略触发看内存和淘汰计数调整容量和策略
某类 key 被清掉代码主动删除或刷新查发布记录和操作日志加命名空间和审计
缓存命中率波动key 拼接不一致对比请求参数和 key统一 key 生成方法

这篇题的核心不是 Redis 会不会删除 key,而是你能不能把过期、淘汰、主动删除和缓存设计区别开。区别清楚,方案才不会乱用。