Redis缓存过期策略
首先,我们要明白缓存过期的目的是为了在 Key 超过 expire_time 后,从内存中删除,减少内存空间的占用。其次,要分析不同策略的定义、优点和缺点。Redis 的过期策略主要有三种实现方式:
(1)定时删除:
- 定义:对于每一个有过期时间的 Key,创建一个定时器,到过期时间立即删除;
- 优点:保存内存可以尽快释放,减少过期 Key 对内存空间的占用;
- 缺点:占用大量的 CPU 资源去处理定时器,影响缓存的吞吐量,这和 Redis 设计追求性能的设定不符,所以一般不会采用这种策略。
(2)惰性删除:
- 定义:过期的 Key 不做处理,只有当访问这个 Key 时才会判断是否过期,过期则清除;
- 优点:删除操作只有在访存的时候才可能执行,对 CPU 的占用做到了最小。
- 缺点:如果内存中大量的 Key 均过期,且一段时间内没有被访问,会占用大量内存。
(3)定期删除:
- 定义:每隔一段时间全量扫描设置了过期时间的 Key,如果失效则从内存中删除,否则不做处理;
- 优点:通过限制定时的频率,来减少对 CPU 的占用和对内存的占用;
- 缺点:作为一种折中的方案,在内存友好方面,不如定时删除策略;在 CPU 友好方面,不如惰性删除。使用时的表现非常依赖配置的定期频率。
文章来源:https://www.5axxw.com/wiki/content/6u4bot

浙公网安备 33010602011771号