php redis设置过期的键,redis 设置键过期时间[通俗易懂]

php redis设置过期的键,redis 设置键过期时间[通俗易懂]键过期功能的相关命令设置生存时间:EXPIRE命令和PEXPIRE命令。设置过期时间:EXPIREAT命令和PEXPIREAT命令。查看剩余生存时间:TTL命令和PTTL命令。删除生存时间或过期时间:PERSIST命令。设置生存时间EXPIREkeyseconds将键key的生存时间设置为指定的秒数。PEXPIREkeymilliseconds将键ke…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

键过期功能的相关命令

设置生存时间: EXPIRE 命令和 PEXPIRE 命令。

设置过期时间: EXPIREAT 命令和 PEXPIREAT 命令。

查看剩余生存时间: TTL 命令和 PTTL 命令。

删除生存时间或过期时间: PERSIST 命令。

设置生存时间

EXPIRE key seconds 将键 key 的生存时间设置为指定的秒数。

PEXPIRE key milliseconds 将键 key 的生存时间设置为指定的毫秒数。

如果给定的键不存在,那么 EXPIRE 和 PEXPIRE 将返回 0 ,表示设置失败;如果命令返回 1 ,那么表示设置成功。

当一个键被设置了生存时间之后,它的生存时间将会随着时间的流逝而减少:时间过去一毫秒,键的生存时间就减少一毫秒;时间过去一秒钟,键的生存时间就减少一秒钟;以此类推。

当一个键的生存时间被减少至低于 0 时,Redis 就会自动将这个键删除掉。

redis> SET msg “hello world”

OK

redis> EXPIRE msg 5 # 设置生存时间

(integer) 1

redis> EXISTS msg # 仍然存在

(integer) 1

redis> EXISTS msg # 已被自动删除

(integer) 0

redis> PEXPIRE number 5500

(integer) 1

redis> EXISTS number

(integer) 1

redis> EXISTS number

(integer) 0

严格来说,设置生存时间为 5 ,会让键存在 6 秒钟。

设置过期时间

EXPIREAT key timestamp 将键 key 的过期时间设置为指定的秒级 UNIX 时间戳。

PEXPIREAT key milliseconds-timestamp 将键 key 的过期时间设置为指定的毫秒级 UNIX 时间戳。

如果给定的键不存在,那么 EXPIREAT 和 PEXPIREAT 将返回 0 ,表示设置失败;如果命令返回 1 ,那么表示设置成功。

对于被设置了过期时间的键来说,当键的过期时间小于当前时间的时候,Redis 就会自动地删除该键。

redis> SET msg “time to go”

OK

redis> EXPIREAT msg 1588498909

(integer) 1

redis> EXISTS msg # 1588498909 之前

(integer) 1

redis> EXISTS msg # 1588498909 之后

(integer) 0

redis> SET song “Last Night, Good Night”

OK

redis> PEXPIREAT song 1588498908000

(integer) 1

redis> EXISTS song # 1588498908000 之前

(integer) 1

redis> EXISTS song # 1588498908000 之后

(integer) 0

生存时间和过期时间的区别

设置生存时间和设置过期时间都可以让 Redis 自动删除指定的键,它们的区别在于设置“键什么时候要被删除”的方式不同:

• EXPIRE 和 PEXIRE 的作用是让键在 N 秒钟或者 N 毫秒之后被删除。

• 而 EXPIREAT 和 PEXPIREAT 的作用则是让键在指定的 UNIX 时间到达之后被删除。

带有生存时间的键就像是一个倒计时器,它会倒数 5、4、3、2、1、0,然后被删掉。

而带有过期时间的键则像是一个定时器,它会在指定的时间来临之后被删掉。

返回键的剩余生存时间

TTL key 以秒为单位,返回键的剩余生存时间。

PTTL key 以毫秒为单位,返回键的剩余生存时间。

TTL 和 PTTL 可能会返回三种不同的 值:

-2 键不存在。

-1 键存在,但没有设置过期时间或者生存时间。

>= 0 键的剩余生存时间。

redis> SET msg “hello”

OK

redis> EXPIRE msg 10086

(integer) 1

redis> TTL msg

(integer) 10083

redis> PTTL msg

(integer) 10079336

redis> SET number 10086

OK

redis> EXPIREAT number 1408498480

(integer) 1

redis> TTL number # 距离 14…80 的秒数

(integer) 15

redis> PTTL number # 距离 14…80 的毫秒数

(integer) 11651

注意,Redis 并没有提供查看键的过期时间的命令,所以对于一个设置了过期时间的键来说,我们只能使用TTL 和 PTTL 来查看它的剩余生存时间。

移除键的过期时间或生存时间

PERSIST key

移除为键 key 设置的过期时间或生存时间,使得它不会被 Redis 自动删除。

移除成功时命令返回 1 ;如果命令没有设置过期时间或生存时间,那么命令返回 0 。

redis> SET msg “hello”

OK

redis> EXPIRE msg 30

(integer) 1

redis> TTL msg

(integer) 28

redis> PERSIST msg

(integer) 1

redis> TTL msg

(integer) -1

redis> SET number 10086

OK

redis> EXPIREAT number 1408499100

(integer) 1

redis> TTL number

(integer) 25

redis> PERSIST number

(integer) 1

redis> TTL number

(integer) -1

SETEX 命令

因为

SET key value

EXPIRE key seconds

这个模式经常出现,所以 Redis 在 2.0 版本新增了 SETEX 命令:

SETEX key seconds value

这个命令相当于原子地执行 SET 命令和 EXPIRE 命令。

PSETEX 命令

在 Redis 2.6.0 ,Redis 开始支持毫秒精度的过期时间和生存时间,并增加了相应的 PEXPIRE、PEXPIREAT、PTTL 三个命令,以及 PSETEX 命令:

PSETEX key milliseconds value

执行这个命令相当于原子地执行以下两个命令:

SET key value

PEXPIRE key milliseconds

SET 命令对生存时间的支持

在 Redis 2.6.12 版本,Redis 又对 SET 命令进行了修改,让它支持可选的 EX 参数和 PX 参数:

SET key value [EX seconds] [PX milliseconds]

执行 SET key value EX seconds 相当于执行 SETEX key seconds value ;

而执行 SET key value PX milliseconds 相当于执行 PSETEX key milliseconds value 。

尽管目前 SETEX 和 PSETEX 都能正常使用,还是建议尽量使用 SET 而不是 SETEX 或者PSETEX ,因为使用 SET 来设置生存时间更简洁一些,而比较旧的 SETEX 和 PSETEX 在将来可能会被废弃

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189335.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 软件架构设计—软件架构概述[通俗易懂]

    软件架构设计—软件架构概述[通俗易懂]像学写文章一样,在学会字、词、句之后,就应上升到段落,就应追求文章的“布局谋篇”,这就是架构。通俗地讲,软件架构设计就是软件系统的“布局谋篇”。人们在软件工程实践中,逐步认识到了软件架构的重要性,从而开辟了一个崭新的研究领域。软件架构的研究内容主要涉及软件架构描述、软件架构设计、软件架构风格、软件架构评价和软件架构的形成方法等。软件设计人员学习软件架构知识旨在站在…

  • echarts中国地图使省份选择性滑动或点击高亮「建议收藏」

    echarts中国地图使省份选择性滑动或点击高亮「建议收藏」本文介绍echarts显示中国省份图,对于需要高亮的省份进行筛选。并且对省份进行选择性交互。首先我们需要一个颜色集合,代表我们要设置多少种颜色。这里用到了dataRange。dataRange:{ show:false, x:’left’, y:’bottom’, splitList:[ …

    2022年10月20日
  • Burpsuite Professional安装及使用教程(抓包)

    Burpsuite Professional安装及使用教程(抓包)先从吾爱破解论坛下载工具:https://down.52pojie.cn/Tools/Network_Analyzer/Burp_Suite_Pro_v1.7.37_Loader_Keygen.zip工具运行需要Java环境,请自行安装,此处不赘述。解压完后双击keygen填一下LicenseText(随意),然后点击Run即可启动BurpSuite的主程序将keygen中得到的License复制粘贴到这里然后点击Next点击这个后出现下一个界面点击Copyreques

  • 肝通宵写了三万字把SQL数据库的所有命令,函数,运算符讲得明明白白讲解,内容实在丰富,建议收藏+三连好评!

    肝通宵写了三万字把SQL数据库的所有命令,函数,运算符讲得明明白白讲解,内容实在丰富,建议收藏+三连好评!前言在下面所有的讲解中,我将会以基本语法,案例,联系形式讲解,从而加强对每一个语句的使用和认识。我就不用贴图方式返回给大家结果了,实在占空间布局。本篇文章是笔者整理了整整一个通宵才写出,希望大家三连好评,谢谢。当然,拥有本篇文章,你将会完全整我mysql的所有语句使用,不再用去购买或者杂乱学习。MYSQL最重要的命令SELECT从数据库中提取数据UPDATE更新数据库中的数据DELETE从数据库中删除数据INSERTINTO将新数据插入数据库CREATEDATABASE创建

  • 小米如何安装magisk和太极阳(纯小白篇)

    小米如何安装magisk和太极阳(纯小白篇)首先说明,我本人也是一个小白,很多专业术语和知识都不是特别了解。所以如果教程里有些许错误请见谅。我自己的手机是MI8,MIUI10.x.x.,在我安装msgisk的时候看了很多经验贴才下手的最后一次成功,但是网上并没有一篇完全适合小白的帖子,所以我这个小白就站出来了。好了,下面是正文,有关刷magisk的所有软件,下面都会在用到的地方给出。建议动手之前,先通看一遍本文,然后再按照本文操作。然后你会…

  • 机器学习框架对比

    机器学习框架对比2.1主流深度学习框架对比各个开源框架在Github上的数据统计数据统计截止于2017.07.15可以看到各大主流框架基本都支持Python,目前Python在科学计算和数据挖掘领域可以说是独领风骚。虽然有来自R、Julia等语言的竞争压力,但是Python的各种库实在是太完善了,Web开发、数据可视化、数据预处理、数据库连接,爬虫等无所不能,有一个完美的生态环境。仅

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号