ItGo.me - 专注IT技术分享

首页 > Redis > Redis附加功能之键过期功能

Redis附加功能之键过期功能

时间:2016-08-28来源:网友分享 点击:

一、键过期功能的相关命令

二、设置生存时间

Redis 提供了两个命令来设置键的生存时间(TTL,time to live),它们分别是:

如果给定的键不存在,那么 EXPIRE 和 PEXPIRE 将返回 0 ,表示设置失败;如果命令返回 1 ,那么表示设置成功。
当一个键被设置了生存时间之后,它的生存时间将会随着时间的流逝而减少:时间过去一毫秒,键的生存时间就减少一毫秒;时间过去一秒钟,键的生存时间就减少一秒钟;以此类推。
当一个键的生存时间被减少至低于 0 时,Redis 就会自动将这个键删除掉。

EXPIRE示例:


redis> SET msg "hello world"OKredis> EXPIRE msg 5 # 设置生存时间(integer) 1redis> EXISTS msg # 仍然存在(integer) 1redis> EXISTS msg # 已被自动删除(integer) 0

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

PEXPIRE 示例:


redis> PEXPIRE number 5500(integer) 1redis> EXISTS number(integer) 1redis> EXISTS number(integer) 0

注 1 :一秒钟 = 1000 毫秒
注 2 :Redis 默认每 100 毫秒检查一次键是否过期,所以上表也是以每 100 毫秒为单位列出的。

三、设置过期时间

Redis 提供了两个命令用于设置键的过期时间(expire time):

如果给定的键不存在,那么 EXPIREAT 和 PEXPIREAT 将返回 0 ,表示设置失败;如果命令返回 1 ,那么表示设置成功。
对于被设置了过期时间的键来说,当键的过期时间小于当前时间的时候,Redis 就会自动地删除该键。

EXPIREAT 示例:


redis> SET msg "time to go"OKredis> EXPIREAT msg 1000000005(integer) 1redis> EXISTS msg # 1000000005 之前(integer) 1redis> EXISTS msg # 1000000005 之后(integer) 0

PEXPIREAT 示例:


redis> SET song "Last Night, Good Night"OKredis> PEXPIREAT song 1000000005500(integer) 1redis> EXISTS song # 1000000005500 之前(integer) 1redis> EXISTS song # 1000000005500 之后(integer) 0

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

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

EXPIRE 和 PEXIRE 的作用是让键在 N 秒钟或者 N 毫秒之后被删除。
EXPIREAT 和 PEXPIREAT 的作用则是让键在指定的 UNIX 时间到达之后被删除。

带有生存时间的键就像是一个倒计时器,它会倒数 5、4、3、2、1、0,然后被删掉。
而带有过期时间的键则像是一个定时器,它会在指定的时间来临之后被删掉。

五、返回键的剩余生存时间

在为一个键设置过期时间或者生存时间之后,用户可以使用 TTL 命令或者 PTTL 命令查看这个键的剩余生存时间,以此来获知键还有多久才会被 Redis 删除:

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

TTL 和 PTTL 示例:


redis> SET msg "hello"OKredis> EXPIRE msg 10086(integer) 1redis> TTL msg(integer) 10083redis> PTTL msg(integer) 10079336

redis> SET number 10086OKredis> EXPIREAT number 1408498480(integer) 1redis> TTL number # 距离 14...80 的秒数(integer) 15redis> PTTL number # 距离 14...80 的毫秒数(integer) 11651

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

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


PERSIST key

移除为键 key 设置的过期时间或生存时间,使得它不会被 Redis 自动删除。
移除成功时命令返回 1 ;如果命令没有设置过期时间或生存时间,那么命令返回 0 。

PERSIST示例:


redis> SET msg "hello"OKredis> EXPIRE msg 30(integer) 1redis> TTL msg(integer) 28redis> PERSIST msg(integer) 1redis> TTL msg(integer) -1

redis> SET number 10086OKredis> EXPIREAT number 1408499100(integer) 1redis> TTL number(integer) 25redis> PERSIST number(integer) 1redis> TTL number(integer) -1

Redis附加功能之键过期功能

Redis附加功能之键过期功能  讨论


FastDFS加Redis实现自定义文件名存储海量文件

FastDFS非常适合存储大量的小文件,遗憾的是本身不支持自定义文件名,文件名是存储成功以后根据存储位置生成的一个file_id。很多应用场景不得不使用自定义文件名,在不修改其源码的情况下...

redis集群部署及常用的操作命令(上)

简单说下自己测试搭建简单的redis集群的大体步骤: 1.首先你的有6个redis(官方说最少6个,3master,3slave),可以先在一台机器上搭建,搭建到多台上应该只需要改变启动命令即可(可能需要一...

在Node.js中访问Redis服务器,Node Redis Protocol

Node Redis Protocol 可以你在 上操作 Redis 服务器。 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。...

一、键过期功能的相关命令 二、设置生存时间 Redis 提供了两个命令来设置键的生存时间(TTL,time to live),它们分别是: 如果给定的键不存在,那么 EXPIRE 和 PEXPIRE 将返回 0 ,表示设置失败;
------分隔线----------------------------