1、过期相关命令
- EXPIRE key seconds,设置key的生存秒数;
- PEXPIRE key milliseconds,设置key的生存毫秒数;
- EXPIREAT key timestamp,设置key的过期时间戳(秒);
- PEXPIREAT key timestamp,设置key的过期时间戳(毫秒)
- SETEX,设置一个字符串的过期时间;
- TTL与PTTL,接收一个带有生存时间的键,返回键的剩余生成时间。
这些设置过期时间命令,本质上都会转成PEXPIREAT命令来执行,数据库中存储的是键的过期时间点。
2、应该使用哪个过期命令比较靠谱?
注意:建议直接使用EXPIREAT命令来设置过期时间,避免主从同步延迟,导致从库实际的EXPIREAT时间比主库的晚,最终客户端在从库上读取到了过期的数据(主库已过期,从库未过期)。
3、过期字典
我们注意到,上面的数据库结构图中,包含了一个expires过期字典,该字典的键是一个纸指向键空间中某个数据库键的指针,值是一个long long类型的整数,保存数据库键的过期时间(毫秒时间戳)。