Redis设置过期时间
时间:2026-10-20 07:20 作者:emer 分类: 无
Redis设置过期时间
引言
缓存键必须带TTL自动失效,否则热点数据永久驻留直到内存写满。EXPIRE设置秒级过期,PEXPIRE毫秒,SET组合NX/EX可一步完成写入带过期,是防止缓存永久堆积的基本功。
写入时直接带过期
SET code:1001 123456 EX 300 NX
EX 300表示5分钟后过期,NX只在键不存在时写入,一次命令完成防重复与失效。
给已有键补过期
EXPIRE code:1001 300
键存在返回1,键不存在返回0,只设置剩余存活秒数。
查看剩余存活
TTL code:1001
返回剩余秒数;-1表示永久不过期,-2表示键已不存在。
毫秒级过期
PEXPIRE code:1001 300000
PTTL code:1001
对验证码、限流等需要毫秒精度的场景使用。
取消过期变永久
PERSIST code:1001
移除TTL让键永久保留,需要长期数据时用。
绝对值过期
EXPIREAT code:1001 1760000000
以Unix时间戳设定具体到期时刻,适合定时失效场景。
注意事项
- EXPIRE针对键整体,hash内部field不单独过期;
- 覆盖写值(SET同名键)会清掉旧TTL,需重新设置;
- TTL是相对当前时间,持久化恢复后仍按剩余时间走;
- 分布式锁用EXPIRE要配合SET NX原子写入,别先SET再EXPIRE;
- 大量键同时过期要错开时间,避免雪崩;
- TTL返回-1和-2含义不同,排查时别混。
总结
SET加EX一步写入带秒级TTL,EXPIRE给已有键补过期,TTL查剩余秒数,PEXPIRE/PTTL用毫秒,PERSIST取消过期变永久,EXPIREAT按时间戳定点失效。注意覆盖写会清TTL需重设,hash字段无单独过期,分布式锁要原子NX加过期,批量过期错开避免雪崩。