码哥,当 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:仅在新到期时间小于当前到期时间才设置到过期时间。
过期与持久化
主从或者集群架构中,两台