本文内容
设置过期时间的命令
Redis 源代码中的数据结构
操作过期时间
过期策略
其他模块对过期键的处理
一 设置过期时间的命令
Redis 有四个命令可用于设置键的过期时间(生存时间ttl):
EXPIRE :将键的生存时间设为 ttl 秒
PEXPIRE :将键的生存时间设为 ttl 毫秒
EXPIREAT :将键的过期时间设为 timestamp 所指定的秒数时间戳
PEXPIREAT :将键的过期时间设为 timestamp 所指定的毫秒数时间戳
二 Redis 源代码中的数据结构
接下来,了解一下Redis里面如何保存过期键,有助于理解。
typedef structredisDb {
...
dict*dict; //保存着所有键值对
dict *expires //保存过期字典
...
} redisDb;
expires指针保存了所有键过期字典,过期字典的值是一个long类型的整数,一个毫秒级的 UNIX 时间戳。
从以上结构中可以看到expire字典(过期字典)和dict字典(数据库键空间,保存着数据库中所有键值对)是并列的,由此可见expire字典的重要性。
三 操作过期时间
如下一连串命令,演示用expire命令设置过期时间,再用persist命令取消,用ttl命令查看还剩下多少时间,整个过程:
127.0.0.1:6379> set message "hello"
OK<