当 key 达到过期时间,Redis 就会马上删除么?
先说结论:并不会立马删除。Redis 有两种删除过期数据的策略:
-
定期选取部分数据删除;
-
惰性删除;
该命令在 Redis 2.4 版本,过期时间并不是很精确,它可能在零到一秒之间。
从 Redis 2.6 开始,过期错误为 0 到 1 毫秒。
EXPIRE key seconds [ NX | XX | GT | LT] 指令可以将指定的 key 设置过期时间,如果没有设置过期时间, key 将一直存在,除非我们明确将其删除,比如执行 DEL 指令。
所谓”狡兔死,走狗烹“,没用了就干掉,跟 35 岁就“毕业”是一个道理。
好慌……
从 Redis 版本 7.0.0 开始:EXPIRE 添加了选项:NX、XX和GT、LT 选项。
-
NX:当 key 没有过期时才设置过期时间;
-
XX:只有 key 已过期的时候才设置过期时间;
-
GT:仅当新的到期时间大于当前到期时间时才设置过期时间;
-
LT:仅在新到期时间小于当前到期时间才设置到过期时间。
过期与持久化
❝主从或者集群架构中,两台机器的时钟严重不同步,会有什么问题么?
key 过期信息是用 Unix 绝对时间戳表示的。
<
Redis 过期数据删除策略解析

Redis 的过期数据不会立即删除,采用惰性删除和定期删除策略。惰性删除在客户端访问时检查是否过期并删除,定期删除每秒随机检查并删除过期 key。Redis 7.0.0 后增加了设置过期时间的选项。时钟同步对于过期操作至关重要,不同步可能导致过期混乱。当过期数据过多,内存淘汰机制将启动。
最低0.47元/天 解锁文章
1615

被折叠的 条评论
为什么被折叠?



