侧边栏壁纸
博主头像
月伴飞鱼 博主等级

行动起来,活在当下

  • 累计撰写 39 篇文章
  • 累计创建 25 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Redis的过期策略是怎么样的?

月伴飞鱼
2025-03-10 / 0 评论 / 1 点赞 / 5 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Redis过期策略

Redis 提供了设置过期时间的机制,通过 EXPIREEXPIREATPERSIST 等命令控制键值对的生命周期。

过期时间设置后,Redis 会根据以下策略来删除过期的键:

1. 定期删除(Periodic Deletion)

Redis 默认每隔 100 毫秒就会随机检查一些设置了过期时间的键,并检查它们是否已过期。

如果某个键已经过期,Redis 会主动删除它。

定期删除有助于保证过期的键能及时被清理,但这也意味着 Redis 需要定期扫描一部分键,并消耗一定的 CPU 资源,可能影响性能。

2. 惰性删除(Lazy Deletion)

当客户端访问一个键时,Redis 会检查该键是否已过期。

如果已过期,Redis 会删除这个键并释放内存。

惰性删除节省了 CPU 资源,但可能会导致过期的键仍然占用内存,直到该键被访问为止。

3. 结合使用:

Redis 默认同时开启定期删除和惰性删除策略,以确保:

  • 定期删除:主动清理过期键,减少过期键占用的内存。

  • 惰性删除:避免不必要的计算和资源消耗,仅当过期键被访问时才进行删除。

内存回收:

  • Redis 不会立即释放内存,而是将过期键标记为“已过期”并将其放入专门的链表中。当内存使用率达到一定阈值时,Redis 会进行内存回收,实际释放占用的内存。

  • 这些被删除的键的内存会被操作系统标记为“可重用的内存”,但并不意味着这些内存会立即归还给操作系统,可能会在未来的内存分配中被重用。

过期时间设置与命令

  • EXPIRE:设置某个键的过期时间(秒)。

  • EXPIREAT:设置某个键的过期时间,过期时间为指定的时间戳。

  • PERSIST:移除键的过期时间,使键永不过期。

Redis是否立即删除过期键

过期键 并不会立即删除,而是采取定期删除和惰性删除的策略。

具体而言:

  • 如果过期键没有被访问,可能会等到 Redis 定期删除任务触发时才会被删除。

  • 如果过期键被访问,Redis 会在惰性删除过程中清除它。

因此,过期键的删除过程是延迟的,并不是即时发生的。

公众号.png

1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
    1. 支付宝打赏

      qrcode alipay
    2. 微信打赏

      qrcode weixin
博主关闭了所有页面的评论