Redis 键的生存时间
设置过期时间
命令 | 作用 |
---|---|
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
并删除已过期键,执行超过指定时间则停止。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 爱吃胡萝卜!