设置过期时间

命令作用
EXPIRE seconds设置剩余生存时间
PEXPIRE milliseconds同上,单位毫秒
EXPIREAT seconds-timestamp设置过期时间戳
PEXPIREAT milliseconds-timestamp同上,单位毫秒
SETEX / SET EX专用于 String
PERSIST去除过期时间

设置过期时间命令最终都会调用 PEXPIREAT,当键发生更新时,过期时间失效。

剩余生存时间

TTL key or PTTL key

过期键删除策略

三种策略:

  • 定时删除:对键设置过期时间的同时,设置一个 timer,timer 到期后立即删除键。
  • 惰性删除:在访问时做过期检查,过期则先删除,再执行原来的操作。
  • 定期删除:周期性地删除一批过期键。

定期删除,内存友好,CPU 不友好。过期键较多时会大量占用 CPU,同时需要注册时间事件。
惰性删除对内存不友好,如果键过期后一直没被访问,则此键将一直驻留在内存中。
定期删除是前两种地折衷,Redis 中是遍历数据库,然后从 expires 中随机挑选 key 并删除已过期键,执行超过指定时间则停止。