Redis命令参考【EXPIRE】

EXPIRE

EXPIRE key seconds

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

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

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

比如说,对一个 key 执行 INCR 命令,对一个列表进行 LPUSH 命令,或者对一个哈希表执行 HSET 命令,这类操作都不会修改 key 本身的生存时间。

另一方面,如果使用 RENAME 对一个 key 进行改名,那么改名后的 key 的生存时间和改名前一样。

RENAME 命令的另一种可能是,尝试将一个带生存时间的 key 改名成另一个带生存时间的 another_key ,这时旧的 another_key (以及它的生存时间)会被删除,然后旧的 key 会改名为 another_key ,因此,新的 another_key 的生存时间也和原本的 key 一样。

使用 PERSIST 命令可以在不删除 key 的情况下,移除 key 的生存时间,让 key 重新成为一个『持久的』(persistent) key

更新生存时间

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

过期时间的精确度

在 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

时间: 2024-11-06 22:15:47

Redis命令参考【EXPIRE】的相关文章

Redis 命令参考

本文档是 Redis Command Reference 和 Redis Documentation 的中文翻译版: 所有 Redis 命令文档均已翻译完毕, Redis 最重要的一部分主题(topic)文档, 比如事务.持久化.复制.Sentinel.集群等文章也已翻译完毕. 文档目前描述的内容以 Redis 2.8 版本为准, 查看更新日志(change log)可以了解本文档对 Redis 2.8 所做的更新. 你可以通过网址 doc.redisfans.com 在线阅览本文档, 也可以下

Redis命令参考之复制(Replication)

Redis 支持简单且易用的主从复制(master-slave replication)功能, 该功能可以让从服务器(slave server)成为主服务器(master server)的精确复制品. 以下是关于 Redis 复制功能的几个重要方面: Redis 使用异步复制. 从 Redis 2.8 开始, 从服务器会以每秒一次的频率向主服务器报告复制流(replication stream)的处理进度. 一个主服务器可以有多个从服务器. 不仅主服务器可以有从服务器, 从服务器也可以有自己的从

redis命令参考(二)

上面一篇多是对有序集合的处理,这里对常用的操作命令进行介绍. 一.INCR  : 原子操作防并发,将key值自增1,如果非数字报错,如果不存在key,则自动创建. INCR key 例子: INCR myNum //如果myNum不存在,则初始化为0,并自增为1 典型使用: 计数器  : 比如统计选项.统计页面访问.游戏里面记录分数 限数器 : 典型用法是限制公开 API 的请求次数 二.INCRBY:同上,将key值自增 某个值 INCRBY key increment 例子: INCRBY

Redis 命令参考——PubSub(发布订阅)

PubSub(发布订阅)PUBLISH PUBLISH channel message 将信息 message 发送到指定的频道 channel . 可用版本: >=2.0.0 时间复杂度: O(N+M),其中 N 是频道 channel 的订阅者数量,而 M 则是使用模式订阅(subscribed patterns)的客户端的数量. 返回值: 接收到信息 message 的订阅者数量. # 对没有订阅者的频道发送信息 redis>publish bad_channel "can a

redis命令参考(三) List列表相关

本篇对redis中List列表相关操作函数的总结: 思考:可以将list作为堆栈使用,这一点可以用来解决很多问题. 一.LPUSH 二.RPUSH 三.LPOP 四.RPOP 五.LRANGE > rpush lover lover1 (integer) 1 > lrange lover 0 -1 //列出所有范围 1) "lover1" > rpush lover lover2 //列表后面加入 (integer) 2 > rpush lover lover3

redis命令参考

最近打算用到redis的排序功能,所以有接触,发现极好,比memcache功能丰富好多.先介绍一部分,以后慢慢学,慢慢补充. 先澄清一点,redis中,key表示有序集合的名字, 实际是member-value对. 一.Sorted Set (有序集合) //自己歪歪,有序集合底层应该是插入排序算法 ZADD  :将一个或多个member的值score,存入有序集中. 增.改 ZADD key score member [score member] 例子: ZADD 'mySortedSet'

redis演练(2) 最全redis命令列表

官方The full list of commands 官方在线交互学习工具 Redis命令参考简体中文版 Redis-cli命令最新总结 Redis 命令参考(官方中文翻译) Redis命令简明示例 下面列表是本人通过程序搜集的help命令整理的聚合列表,希望为redis填把火. COMMAND summary since group DECR key  Decrement the integer value of a  key by one  1.0.0  string DECRBY key

redis命令详解与使用场景举例——String

APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾. 如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样. 可用版本: 2.0.0+ 时间复杂度: 平摊O(1) 返回值: 追加 value 之后, key 中字符串的长度. 对不存在的 key 执行 APPEND redis> EXISTS myphone # 确保 myphone 不

Redis 命令学习

每天不学习点新的东西,感觉就有点会被社会淘汰掉了.也许现在学习的知识会很快忘记,下次学习用到这个知识点的时候,再回来翻记录的笔记,我想这样会比从头再学,效率会高点吧. 闲话不多聊,回归正题.今天学习redis的命令,争取把常用的redis命令都敲一遍. redis命令就是在redi服务上执行的.要想启动redis服务.我是在windows本机上安装的redis.先切换到redis目录 然后启动redis服务. 启动redis redis-cli Redis 键(key) set key conm