Redis命令参考【EXPIRE】

EXPIRE

EXPIRE key secondshtml

为给定 key 设置生存时间,当 key 过时时(生存时间为 0 ),它会被自动删除。python

在 Redis 中,带有生存时间的 key 被称为『易失的』(volatile)。web

生存时间能够经过使用 DEL 命令来删除整个 key 来移除,或者被 SETGETSET 命令覆写(overwrite),这意味着,若是一个命令只是修改(alter)一个带生存时间的 key 的值而不是用一个新的 key 值来代替(replace)它的话,那么生存时间不会被改变。redis

好比说,对一个 key 执行 INCR 命令,对一个列表进行 LPUSH 命令,或者对一个哈希表执行 HSET 命令,这类操做都不会修改 key 自己的生存时间。session

另外一方面,若是使用 RENAME 对一个 key 进行更名,那么更名后的 key 的生存时间和更名前同样。app

RENAME 命令的另外一种多是,尝试将一个带生存时间的 key 更名成另外一个带生存时间的 another_key ,这时旧的 another_key (以及它的生存时间)会被删除,而后旧的 key 会更名为 another_key ,所以,新的 another_key 的生存时间也和本来的 key 同样。google

使用 PERSIST 命令能够在不删除 key 的状况下,移除 key 的生存时间,让 key 从新成为一个『持久的』(persistent) keyspa

更新生存时间code

能够对一个已经带有生存时间的 key 执行 EXPIRE 命令,新指定的生存时间会取代旧的生存时间。htm

过时时间的精确度

在 Redis 2.4 版本中,过时时间的延迟在 1 秒钟以内 —— 也便是,就算 key 已通过期,但它仍是可能在过时以后一秒钟以内被访问到,而在新的 Redis 2.6 版本中,延迟被下降到 1 毫秒以内。

Redis 2.1.3 以前的不一样之处

在 Redis 2.1.3 以前的版本中,修改一个带有生存时间的 key 会致使整个 key 被删除,这一行为是受当时复制(replication)层的限制而做出的,如今这一限制已经被修复。

可用版本:
>= 1.0.0
时间复杂度:
O(1)
返回值:
设置成功返回 1
key 不存在或者不能为 key 设置生存时间时(好比在低于 2.1.3 版本的 Redis 中你尝试更新 key 的生存时间),返回 0
redis> SET cache_page "www.google.com"
OK

redis> EXPIRE cache_page 30  # 设置过时时间为 30 秒
(integer) 1

redis> TTL cache_page    # 查看剩余生存时间
(integer) 23

redis> EXPIRE cache_page 30000   # 更新过时时间
(integer) 1

redis> TTL cache_page
(integer) 29996

模式:导航会话

假设你有一项 web 服务,打算根据用户最近访问的 N 个页面来进行物品推荐,而且假设用户中止阅览超过 60 秒,那么就清空阅览记录(为了减小物品推荐的计算量,而且保持推荐物品的新鲜度)。

这些最近访问的页面记录,咱们称之为『导航会话』(Navigation session),能够用 INCRRPUSH 命令在 Redis 中实现它:每当用户阅览一个网页的时候,执行如下代码:

MULTI
    RPUSH pagewviews.user:<userid> http://.....
    EXPIRE pagewviews.user:<userid> 60
EXEC

若是用户中止阅览超过 60 秒,那么它的导航会话就会被清空,当用户从新开始阅览的时候,系统又会从新记录导航会话,继续进行物品推荐。

 

连接:http://redisdoc.com/key/expire.html

相关文章
相关标签/搜索