缓存有效期和过期策略
有效期 TTL (Time to live)
设置有效期的作用:
- 1.节省空间
- 2.做到数据弱一致性,有效期失效后,可以保证数据的一致性
Redis的过期策略
过期策略通常有以下三种:
- 定时过期
每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。
- 优点:该策略可以立即清除过期的数据,对内存很友好;
- 缺点:但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。
- 惰性过期
只有当访问一个key时,才会判断该key是否已过期,过期则清除。
- 优点:该策略可以最大化地节省CPU资源,
- 缺点:对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。
- 定期过期
每隔一定的时间,会扫描一定数量的数据库的expires字典中一定数量的key,并清除其中已过期的key。
该策略是前两者的一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU和内存资源达到最优的平衡效果。
expire