标准答案

  1. 过期是单个 Key 的业务有效期,到期后它不应继续作为有效缓存返回,即使内存还很充足。
  2. 淘汰发生在内存达到策略阈值时,系统按 LRU、LFU、随机或带 TTL 等策略回收 Key;被淘汰的 Key 可能尚未过期。
  3. 持久化把内存中的部分状态写入磁盘,用于重启或故障恢复;它不能保证每一次写都不丢,也不会替代数据库事务。
  4. 设计时要分别明确:哪些 Key 可以自然过期,内存满时谁可先丢,以及重启后哪些数据必须从其他事实来源重建。

题目解析

把“缓存失效”笼统归因于 TTL 往往会误判。一个 Key 消失可能是过期、内存淘汰、主动删除、故障切换或数据结构错误,排查应从指标和事件记录区分。

如果某类数据被淘汰就会造成业务错误,说明它不应只存在于缓存中,或者需要独立容量、持久化和降级路径。

常见误区

  • 认为设置了较长 TTL 就不会被删除,忽略内存淘汰。
  • 认为开启 AOF 或 RDB 后 Redis 就可以替代所有业务数据库。

作者信息