做婚庆网站,微信提示WordPress登录,河北seo基础入门教程,常州网站设计平台1. 背景Redis 支持为 Key 设置过期时间#xff08;TTL#xff09;#xff0c;让数据在一定时间后自动失效。
例如#xff1a;SET session:1001 userA EX 60 # 60 秒后过期但是问题来了#xff1a;Key 到期后#xff0c;Redis 什么时候、如何删除它#xf…1. 背景Redis 支持为 Key 设置过期时间TTL让数据在一定时间后自动失效。
例如
SET session:1001 userA EX 60 # 60 秒后过期
但是问题来了Key 到期后Redis 什么时候、如何删除它
如果删除不及时会造成内存浪费如果删除太频繁又会占用 CPU。
因此Redis 设计了 三种过期删除策略。
2. 三种过期删除策略1定时删除原理为每个设置过期时间的 Key 创建一个定时器到期后立即删除。✅ 优点能及时释放内存过期数据不会长期存在。❌ 缺点每个 Key 都要维护定时器开销非常大如果过期 Key 很多会严重影响 Redis 性能。
结论不适合 Redis 这种高性能场景。2惰性删除原理当客户端访问某个 Key 时Redis 才会检查它是否过期。如果过期 → 删除不返回数据如果没过期 → 正常返回。✅ 优点只在访问时才检查几乎没有额外开销对 CPU 友好。❌ 缺点如果某些 Key 过期后从未被访问就会一直占用内存导致空间浪费。
3定期删除原理Redis 会定期默认每 100ms随机抽取一批设置了过期时间的 Key检查是否过期如果过期就删除。✅ 优点相比定时删除更省 CPU相比惰性删除又能回收一部分无访问的过期 Key。❌ 缺点抽样删除可能存在一部分过期数据滞留内存一段时间。
3. Redis 实际采用的策略Redis 没有单独使用其中一种而是结合了 惰性删除 定期删除惰性删除保证过期数据在访问时一定会被清理。定期删除保证即使没人访问过期数据也能被逐步清理掉。 这样做能 兼顾性能和内存避免 CPU 或内存被某一方面拖垮。
4. 总结策略删除时机优点缺点是否被 Redis 采用定时删除过期时间一到立刻删除内存释放及时CPU 开销大❌惰性删除访问时检查是否过期对 CPU 友好内存可能浪费✅定期删除每隔一段时间随机抽查内存与性能平衡删除不够精准✅