Redis

洞悉Redis技术内幕:缓存,数据结构,并发,集群与算法
帅旋
关注
充电
IT宅站长,技术博主,共享单车手,全网id:arthinking。

Redis是如何存储键的过期时间的?

发布于 2021-06-16 | 更新于 2024-02-26

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类型的整数,保存数据库键的过期时间(毫秒时间戳)。

image-20211010133010453

本文作者: 帅旋

本文链接: https://www.itzhai.com/columns/redis/how-to-store-key-expiration-time.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。