Redis怎么设置生存和过期时间

在了解原理前 先来看使用方法

通过EXPIRE命令或者PEXPIRE命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间,在经过指定的秒数或者毫秒数之后,服务器就会自动删除生存时间为0的键。

SETEX命令可以在设置一个字符串键的同时为键设置过期时间(只能用于字符串键)

Redis怎么设置生存和过期时间

与EXPIRE命令和PEXPIRE命令类似,客户端可以通过EXPIREAT命令或PEXPIREAT命令,以秒或者毫秒精度给数据库中的某个键设置过期时间

过期时间是一个UNIX时间戳,当键的过期时间来临时,服务器就会自动从数据库中删除这个键

Redis怎么设置生存和过期时间

TTL命令和PTTL命令接受一个带有生存时间或者过期时间的键,返回这个键的剩余生存时间,也就是,返回距离这个键被服务器自动删除还有多长时间

Redis怎么设置生存和过期时间

Redis有四个不同的命令可以用于设置键的生存时间(键可以存在多久)或过期时间(键什么时候会被删除):

  • EXPIRE<key><ttl>命令用于将键key的生存时间设置为ttl秒。

  • PEXPIRE<key><ttl>命令用于将键key的生存时间设置为ttl毫秒。

  • EXPIREAT<key><timestamp>命令用于将键key的过期时间设置为timestamp所指定的秒数时间戳。

  • PEXPIREAT<key><timestamp>命令用于将键key的过期时间设置为timestamp所指定的毫秒数时间戳。

原理

虽然有多种不同单位和不同形式的设置命令,但实际上EXPIRE、PEXPIRE、EXPIREAT三个命令都是使用PEXPIREAT命令来实现的:

无论客户端执行的是以上四个命令中的哪一个,经过转换之后,最终的执行效果都和执行PEXPIREAT命令一样。

Redis怎么设置生存和过期时间

redisDb结构的expires字典保存了数据库中所有键的过期时间,我们称这个字典为过期字典

过期字典的键是一个指针,这个指针指向键空间中的某个键对象(也即是某个数据库键)。

过期字典的值是一个long long类型的整数,这个整数保存了键所指向的数据库键的过期时间——一个毫秒精度的UNIX时间戳。

Redis怎么设置生存和过期时间

下图展示了一个带有过期字典的数据库例子,在这个例子中,键空间保存了数据库中的所有键值对,而过期字典则保存了数据库键的过期时间。

为了展示方便,图中的键空间和过期字典中重复出现了两次alphabet键对象和book键对象。在实际中,键空间的键和过期字典的键都指向同一个键对象,所以不会出现任何重复对象,也不会浪费任何空间。

Redis怎么设置生存和过期时间

图中的过期字典保存了两个键值对:

名列前茅个键值对的键为alphabet键对象,值为1385877600000,这表示数据库键alphabet的过期时间为1385877600000(2013年12月1日零时)。

第二个键值对的键为book键对象,值为1388556000000,这表示数据库键book的过期时间为1388556000000(2014年1月1日零时)。当客户端执行PEXPIREAT命令(或者其他三个会转换成PEXPIREAT命令的命令)为一个数据库键设置过期时间时,服务器会在数据库的过期字典中关联给定的数据库键和过期时间。

在服务器执行以下命令之后

Redis怎么设置生存和过期时间

过期字典将新增一个键值对,其中键为message键对象,而值则为1391234400000(2014年2月1日零时),如图

Redis怎么设置生存和过期时间

以下是PEXPIREAT命令的伪代码定义

Redis怎么设置生存和过期时间

PERSIST命令可以移除一个键的过期时间

Redis怎么设置生存和过期时间

PERSIST命令就是PEXPIREAT命令的反操作:PERSIST命令在过期字典中查找给定的键,并解除键和值(过期时间)在过期字典中的关联。

过期键的判定

通过过期字典,程序可以用以下步骤检查一个给定键是否过期:

1)检查给定键是否存在于过期字典:如果存在,那么取得键的过期时间。

2)检查当前UNIX时间戳是否大于键的过期时间:如果是的话,那么键已经过期;否则的话,键未过期。可以用伪代码来描述这一过程:

Redis怎么设置生存和过期时间

对于一个过期时间为1385877600000(2013年12月1日零时)的键alphabet来说:

如果当前时间为1383282000000(2013年11月1日零时),那么调用is_expired(alphabet)将返回False,因为当前时间小于alphabet键的过期时间。

另一方面,如果当前时间为1385964000000(2013年12月2日零时),那么调用is_expired(alphabet)将返回True,因为当前时间大于alphabet键的过期时间。

以上就是关于“Redis怎么设置生存和过期时间”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

文章标题:Redis怎么设置生存和过期时间,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/21500

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年8月30日 下午11:18
下一篇 2022年8月30日 下午11:19

相关推荐

  • Vue登录功能如何实现

    Vue项目中实现登录大致思路 1、名列前茅次登录的时候,前端调后端的登陆接口,发送用户名和密码 2、后端收到请求,验证用户名和密码,验证成功,就给前端返回一个token 3、前端拿到token,将token存储到localStorage和vuex中,并跳转路由页面 4、前端每次跳转路由,就判断 lo…

    2022年8月29日
    60600
  • mysql如何修改字段值少数

    在mysql中,可以通过使用ALTER TABLE语句给字段添加少数约束(Unique Key)来让字段值少数,语法为“ALTER TABLE 数据表名 ADD CONSTRAINT 少数约束名 UNIQUE(字段名);”。ALTER TABLE语句用于修改原有表的结构;而少数约束可以确保字段的少数…

    2022年9月20日
    67100
  • word字体放大如何弄

    word字体放大的方法 1、先选中需要放大的字体,然后点击开始菜单中的增大字号。 2、选中字体之后在悬浮框中点击字体大小就可以设置了。 3、选中需要放大的字体之后,点击上方菜单栏中的输入框,直接在里面输入你要的字号。 以上就是“word字体放大如何弄”这篇文章的所有内容,感谢各位的阅读!相信大家阅读…

    2022年9月10日
    16800
  • coreldraw如何导入图片

    coreldraw导入图片的方法 1、打开软件,点击上方的文件。 2、点击导入。 3、这个时候我们选中想要导入的图片,点击导入。 4、然后我们在工作区域里绘制一个区域,图片就成功导入了。 感谢各位的阅读,以上就是“coreldraw如何导入图片”的内容了,经过本文的学习后,相信大家对coreldra…

    2022年9月26日
    18000
  • windows 0xc0150004如何修复

    0xc0150004修复方法: 方法一: 1、我们可能是缺少一些程序运行的必备组件,这个代码一般是缺少了“vc++” 2、大家可以直接在百度中搜索“Microsoft Visual C++ 2010”将该程序下载安装到电脑里。 3、下载安装完后,再进入系统“C:WindowsWinSxS”文件夹。 …

    2022年9月18日
    31100
  • windows中c盘怎么扩大

    c盘可以扩大容量。方法:1、利用“win键+X键”选择“磁盘管理”,删除C盘右侧的分区,使其变为未分配分区;2、右键c盘点击“扩展卷”,系统会自动计算出最大扩容量,没特殊扩展需求点击下一步,完成即可。 本教程操作环境:windows10系统、DELL G3电脑。 c盘可以扩大吗 C盘可以扩容,只需要…

    2022年9月6日
    13900
  • windows ventoy进不了引导如何解决

    ventoy进不了引导解决方法: 方法一: 1、首先,确保你在bios设置里将U盘设置为启动项了。 2、如果没有设置,那么重启电脑,进入bios的“boot”选项下进行设置。 方法二: 1、如果设置后还不行,那么可能是u盘问题。 2、可以尝试回到系统,右键u盘选择“格式化” 3、然后选择“NTFS格…

    2022年8月27日
    2.6K00
  • 怎么修改pip install默认安装路径

    1. 修改pip install默认安装路径 一般使用Anaconda时会使用 pip install ### 来安装各类包,但默认安装路径在C盘,极大占用空间,作为强迫症,我们通过以下步骤来修改默认安装路径。 1.1 查看pip 默认安装位置 名列前茅步:通过win菜单,找到Prompt,点击进入…

    2022年8月30日
    1.8K00
  • windows谷歌浏览器缓存位置在哪

    谷歌浏览器缓存在哪: 1、打开谷歌浏览器在搜索栏输入“Chrome:Version”查看保存文件的位置。 2、随后在我的电脑中找到路径: C:UsersAdministratorAppDataLocalGoogleChromeUser DataDefault。 谷歌浏览器更改位置教程: 1、浏览器默…

    2022年9月8日
    37900
  • 知识库是什么

    知识库是关于产品、服务、部门或主题的自助式在线信息库。为了让大家更好的了解知识库是什么这个问题,下面我们将会围绕:1、企业知识库是什么;2、企业为什么需要知识库;3、知识库的好处有哪些;三点进行展开。 知识库中的数据可以来自任何地方。通常,精通相关主题的贡献者会给知识库增加或扩展内容。内容可以是从你…

    2022年3月18日
    25300
联系我们
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部