Redis

Redis 里一条普通的 SET,会清掉原来的过期时间

shell
SET k v EX 100
SET k v2
TTL k            # -1:过期时间没了,这个 key 永不过期

不带 EX 的 SET 是整个覆盖,连 TTL 一起覆盖掉。其他修改值的命令不会动 TTL:

shell
SET n 5 EX 100
INCR n
TTL n            # 还是 100

想覆盖值又保留过期时间,用 SET k v KEEPTTL(6.0 起)。

缓存刷新时不小心写成普通 SET,key 就再也不会过期了,内存慢慢被占满。

esc