`
jiorry
  • 浏览: 280765 次
  • 性别: Icon_minigender_1
  • 来自: 兰州
社区版块
存档分类
最新评论

redis 下key的过期时间详解 :expire

阅读更多

memcached 和 redis 的set命令都有expire参数,可以设置key的过期时间。但是redis是一个可以对数据持久化的key-value database,它的key过期策略还是和memcached有所不同的。梳理,整理如下:

 

redis通过expire命令来设置key的过期时间。

语法:redis.expire(key, expiration)

 

1. 在小于2.1.3的redis版本里,只能对key设置一次expire。redis2.1.3和之后的版本里,可以多次对key使用expire命令,更新key的expire time。


2. redis术语里面,把设置了expire time的key 叫做:volatile keys。 意思就是不稳定的key。

 

3. 如果对key使用set或del命令,那么也会移除expire time。尤其是set命令,这个在编写程序的时候需要注意一下。


4. redis2.1.3之前的老版本里,如果对volatile keys 做相关写入操作(LPUSH,LSET),和其他一些触发修改value的操作时,redis会删除 该key。 也就是说 :

redis.expire(key,expiration);

redis.lpush(key,field,value);

redis.get(key) //return null

redis2.1.3之后的版本里面没有这个约束,可以任意修改。

 

redis.set(key,100);

redis.expire(key,expiration);

redis.incr(key)

redis.get(key)

//redis2.2.2 return 101; redis<2.1.3 return 1;


5. redis对过期键采用了lazy expiration:在访问key的时候判定key是否过期,如果过期,则进行过期处理。其次,每秒对volatile keys 进行抽样测试,如果有过期键,那么对所有过期key进行处理。

 

end------------------

11
6
分享到:
评论
6 楼 文昌平蓝杰 2014-12-17  
tywo45 写道
请教一下:expire设置的超时是从key创建时开始计时的。如果想像session超时那样,从上一次访问开始计时,redis是否支持?


不知道你老人家解决了没有,但是这个功能可以用,如果没过期,重新set一下来解决的啊,redis有控制原子操作的 函数,你试试去
5 楼 lovme_forever 2014-04-28  
说的不是很详细,设置expire 只对 redis的大key有效吧 ,,他这个是有不同的存储对象的,,string ,list,set ,hash大概这几种,这些对象 里面又可以存放对象,比如hash,想对hash中某一行存储设置expire就不行了吧
4 楼 tywo45 2014-04-07  
请教一下:expire设置的超时是从key创建时开始计时的。如果想像session超时那样,从上一次访问开始计时,redis是否支持?
3 楼 风云无浪 2013-01-22  
写的可以啊,为啥这么多人踩呢。。。
除了set和del还有啥会使expire失效呢?另外如果对大量到key设置expire3600000,会影响性能不?
2 楼 helloqidi 2012-09-25  
谢谢分享!
1 楼 月夜兔 2011-11-14  
,正是我需要的,谢谢!!!

相关推荐

    Redis_Key操作命令

    通过这些命令,我们可以对Redis数据库中的Key进行管理,包括查找、删除、移动、重命名以及设置过期时间等操作,从而更好地利用Redis的数据存储能力。了解和熟练掌握这些命令对于使用Redis至关重要。

    redis命令集合,redis命令详解

    EXPIRE设置某个key的过期时间(秒),(EXPIRE bruce 1000:设置bruce这个key1000秒后系统自动删除)注意:如果在还没有过期的时候,对值进行了改变,那么那个值会被清除。 TTL查找某个key还有多长时间过期,返回时间秒 ...

    十二、Redis(NoSql)

    * 作用:为给定key 设置生存时间,当key 过期时(生存时间为0 ),它会被自动删除 * 可用版本:&gt;= 1.0.0 * 时间复杂度:O(1) * 返回值:设置成功返回1 KEYS指令: * 语法:KEYS pattern * 作用:查找所有符合给定...

    redis常用命令,redis配置文件,redis持久化,redis事务,redis主从复制,jedis的使用

    * EXPIRE key seconds:设置键的过期时间 * TTL key:获取键的剩余生存时间 * TYPE key:获取键的类型 Redis 配置文件 Redis 的配置文件是文本文件,通常命名为 redis.conf。配置文件中可以设置 Redis 的各种参数...

    Redis教程(七):Key操作命令详解

    7. **EXPIRE key seconds** 和 **EXPIREAT key timestamp**:分别为键设置过期时间,单位为秒和绝对时间(Unix时间戳)。成功设置返回1,否则返回0。 8. **TTL key**:查询键的剩余生存时间,返回秒数,若Key不存在...

    redis的简单操作

    - `expire key 60`:设置键`key`的过期时间为60秒。 - `ttl key`:查看键`key`的剩余过期时间。 5. **判断键是否存在**: - `exists key`:判断键`key`是否存在。 6. **删除键**: - `del key1 key2 keyN`:...

    Redis中键值过期操作示例详解

    在 Java 开发中,使用 Jedis(Java Redis 客户端)来操作 Redis 的键过期时间,可以调用相应的方法,例如 `setEx()`、`psetEx()`、`expire()`、`pexpire()`、`expireAt()` 和 `pexpireAt()`。 总的来说,Redis 的键...

    redis学习笔记,redis详解,Java

    同时,Redis提供了`expire`命令,可以设置键的过期时间,以自动清理不再需要的数据。 总结来说,Redis作为一款强大的内存数据存储系统,凭借其丰富的数据结构、高效的操作性能、持久化机制、事务支持以及高可用性...

    redis入门实践PPT

    ### Redis入门实践知识点详解 #### 一、Redis简介与安装 **Redis** 是一款开源的高级键值存储系统。由于其支持多种数据结构,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)以及有序集合...

    Redis-x64-3.2.100压缩包及使用说明.rar

    - `EXPIRE key seconds`:设置键的过期时间。 - `TTL key`:查看键的剩余生存时间。 - `PUSH key value`/`POP key`:在列表两端添加/移除元素。 - `HSET hashkey field value`/`HGET hashkey field`:操作哈希表。 -...

    redis 常用命令

    - **EXPIRE key seconds**:为键设置过期时间,单位是秒。 - **TTL key**:查看键的剩余生存时间,单位是秒。 #### 字符串(String)操作 - **SET key value**:为键设置字符串值。 - **GET key**:获取键所关联的...

    redis2-nginx-module-0.15

    **Redis2-NGINX-Module 0.15 知识详解** Redis2-NGINX-Module 是一个用于 NGINX Web 服务器的扩展模块,它允许开发者将 NGINX 与 Redis 数据库集成,实现高效的数据缓存和交互。这个版本是 0.15,它提供了一系列...

    redis基本命令.docx

    2. **EXPIRE key seconds**:设置键`key`的过期时间为`seconds`秒后。 - 示例:`EXPIRE user:1 3600` 3. **TTL key**:返回键`key`的剩余生存时间。 - 示例:`TTL user:1` 4. **KEYS pattern**:查找所有符合模式`...

    Redis 命令参考 2019.pdf

    - **EXPIRE key seconds**:为`key`设置生存时间,生存时间结束后`key`会被删除。 - **EXPIREAT key timestamp**:设置`key`过期的UNIX时间戳。 - **TTL key**:返回`key`剩余的生存时间。 - **PERSIST key**:移除`...

    redis简介及相关基础命令使用及说明

    - **`EXPIRE key seconds`**: 为 `key` 设置过期时间。 - **`EXPIREAT key timestamp`**: 用时间戳的方式给 `key` 设置过期时间。 - **`PEXPIRE key milliseconds`**: 设置 `key` 的过期时间以毫秒计。 - **`KEYS ...

    要使用Redis构建简单的社交网站.pdf

    - `EXPIRE key seconds`:设置键的过期时间。 - `TTL key`:返回键的剩余生存时间。 #### 三、注意事项 - 在实际开发过程中,需要注意Redis与关系型数据库之间的数据同步问题。 - Redis虽然提供了高效的实时数据...

    redis-缓存文档

    - `EXPIRE key seconds`:为键设置过期时间。 - `TTL key`:查看键的剩余生存时间。 - `TYPE key`:返回键所存储的值的类型。 #### 九、常见问题及面试准备 - **Redis如何处理并发问题?**:Redis采用单线程模型,...

    redis内存模型介绍

    - `EXPIRE`: 为Key设置过期时间。 - `TTL`: 获取Key的剩余过期时间。 - `SELECT`: 选择数据库索引。 - `MOVE`: 将Key从当前数据库移到另一个数据库。 ##### 2.2 Redis的Value Redis支持五种基本的数据类型: ...

    redis命令实践详解.zip

    此外,`EXPIRE key seconds`和`PEXPIRE key milliseconds`分别设置键的过期时间,`TTL key`和`PTTL key`查看剩余生存时间,`PERSIST key`取消过期。 通过以上介绍,我们可以看到Redis提供的丰富命令和功能,使得它...

Global site tag (gtag.js) - Google Analytics