Redis过期时间的作用是设置key的生存时间,时间到后自动删除,节省内存,避免数据无限期占用空间。主要用于缓存数据、临时令牌等场景。设置方法:用EXPIRE key seconds命令设置秒级过期,或SET key value EX seconds一次性设置。实用技巧:1.用TTL key查看剩余时间;2.批量设置过期如PIPELINE;3.结合Lua脚本精确控制;4.监控过期事件用CONFIG SET notify-keyspace-events Ex;5.避免短过期导致抖动,用随机偏移。
Redis官方文档摘录
EXPIRE key seconds 为给定的 key 设置生存时间。当 key 过期时,它会被自动删除,就好像执行了 DEL 命令一样。注意:如果在设置生存时间之前的操作中修改了 key 的值,生存时间会重新计算。时间精度是秒级,最小1秒。示例:EXPIRE mykey 60 返回1表示成功。
博客经验分享
Redis过期时间超级实用,尤其是做缓存的时候。比如用户登录的session,用EXPIRE session:123 3600设置1小时过期,过期自动清理,不用手动删。技巧:别设置太短的过期,比如1秒那种,会频繁删除增加压力;可以用PX key ms设置毫秒级,更精确。另一个技巧是持久化时注意,RDB/AOF不会保存过期时间,靠内存控制。
StackOverflow用户回答
问题:Redis key怎么设置过期?答:SET key value EX 60 或 EXPIRE key 60。作用:防止内存爆炸,特别是热点数据缓存。实用技巧:用SCAN代替KEYS扫描过期key;设置keyspace事件通知,监听__keyevent@0__:expired 来做业务回调,比如重试机制;对于分布式锁,用SETNX + EXPIRE防死锁,但要原子操作用SET key value NX EX 10。
技术论坛讨论
分享技巧:1.缓存穿透用短过期+布隆过滤器;2.热点key用多级缓存+长过期;3.用redis-trib检查过期统计;4.集群模式下过期一致性靠主节点。实际项目里,我们session用24h过期,验证码用300s,完美。别忘了PERSIST key取消过期。
运维手册摘录
监控Redis过期:INFO stats里的expired_keys计数。技巧:lazy free避免阻塞删除大key,用CONFIG SET lazyfree-lazy-expire yes;批量过期用EVAL脚本循环EXPIRE;热点数据用近似LRU结合过期。
FAQ
Q: Redis过期时间是精确的吗?
A: 不精确,是惰性+定期删除,内存紧张时优先删过期key,可能延迟几秒。
Q: 怎么取消key的过期时间?
A: 用PERSIST key命令,立即返回1成功。
Q: 集群环境下过期时间一致吗?
A: 一致,由key所在主节点控制,从节点不参与过期。
Q: SET命令怎么带过期时间?
A: SET key value EX 60 或 PX 60000(毫秒),NX/XX可选。