Redis key 过期策略
Redis 是键值对类型的数据库,可以设置 key 的过期时间,当 Redis 中缓存的 key 过期时可以通过不同的过期策略处理过期的 key,过期策略通常有以下三种,Redis 中同时使用了惰性过期和定期过期两种过期策略;
# 定时过期
- 每个设置过期时间的 key 都需要创建一个定时器,到过期时间就会立即清除,该策略可以立即清除过期的数据,对内存很友好,但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量;
# 惰性过期
- 只有在访问某个 key 时,才会判断该 key 是否已过期,过期则清除,该策略可以最大化地节省CPU资源,却对内存非常不友好,极端情况可能出现大量的过期 key 没有再次被访问,从而不会被清除,占用大量内存;
# 定期过期
- 每隔一定的时间,会扫描一定数量的数据库的 expires 字典中一定数量的 key,并清除其中已过期的 key,该策略是前两者的一个折中方案,通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU和内存资源达到最优的平衡效果;
- expires 字典会保存 Redis 中所有设置了过期时间的 key 的过期时间数据,该字典的 key 是指向键空间中的某个键的指针,value 是该键的毫秒精度的 UNIX 时间戳表示的过期时间,键空间是指该 Redis 集群中保存的所有键;
编辑 (opens new window)
上次更新: 2024/02/25, 17:04:06