当前位置:首页 > 问答 > 正文

Redis缓存 过期机制 灵活掌控Redis六大过期策略,redis的六种过期策略解析

Redis过期机制核心概念

  1. 过期时间设置:通过EXPIRE/PEXPIRE命令或SET+EX参数指定键的存活时间(TTL)。
  2. 过期键判定:Redis内部通过过期字典(expires字典)存储键的过期时间戳,定期检查并清理。

六大过期策略解析

  1. 定时删除(主动)

    • 原理:为每个过期键创建定时器,到期立即删除。
    • 优点:内存释放及时。
    • 缺点:高并发时CPU压力大,影响性能。
  2. 惰性删除(被动)

    Redis缓存 过期机制 灵活掌控Redis六大过期策略,redis的六种过期策略解析

    • 原理:访问键时检查是否过期,过期则删除。
    • 优点:减少CPU消耗。
    • 缺点:内存可能长期占用未访问的过期键。
  3. 定期删除(混合)

    • 原理:周期性随机抽查部分键,删除其中过期的键(默认100ms/次)。
    • 优点:平衡CPU与内存效率。
    • 缺点:仍需调整频率以避免性能波动。
  4. LRU(最近最少使用)

    Redis缓存 过期机制 灵活掌控Redis六大过期策略,redis的六种过期策略解析

    • 原理:淘汰最久未访问的键(近似LRU算法,采样少量键选择淘汰)。
    • 适用场景:热点数据分布明显。
  5. LFU(最不经常使用)

    • 原理:淘汰访问频率最低的键(Redis 4.0+支持)。
    • 适用场景:长期保留高频访问数据。
  6. 随机淘汰

    Redis缓存 过期机制 灵活掌控Redis六大过期策略,redis的六种过期策略解析

    • 原理:随机选择键删除,直到内存足够。
    • 适用场景:无明确访问规律时快速释放内存。

策略配置与选择建议

  • 配置命令:通过maxmemory-policy参数设置(如volatile-lruallkeys-lfu)。
  • 场景推荐
    • 高精度时效需求:定时删除+惰性删除。
    • 内存敏感型:LFU/LRU。
    • 默认平衡方案:定期删除+惰性删除。

注意事项

  • 过期键删除是异步操作,实际释放时间可能有延迟。
  • 持久化时,RDB文件不保存已过期键,AOF会记录删除操作。
    基于Redis 7.x及后续版本特性归纳。)

发表评论