EXPIRE key seconds
起始版本:1.0.0
时间复杂度:O(1)
返回值:1 如果成功设置过期时间;0 如果key不存在或者不能设置过期时间。
为给定 key设置生存时间,当 key过期时(生存时间为 0),它会被自动删除。

1.过期时间跟着key走,与值无关
在Redis中,带有过期时间的key被称为『易失的』(volatile)。 过期时间可以通过使用 DEL命令来删除整个key来移除,或者被 SET和 GETSET命令覆写(overwrite),这意味着,如果一个命令只是修改(alter)一个带过期时间的 key的值而不是用一个新的 key值来代替(replace)它的话,那么过期时间不会被改变。比如说,对一个 key执行 INCR命令,对一个列表进行 LPUSH命令,或者对一个哈希表执行 HSET命令,这类操作都不会修改 key本身的过期时间。

2.设置永久有效期
使用PERSIST命令可以清除超时,使其变成一个永久的key。

3.rename命令对有效期影响
如果key被RENAME命令修改,相关的超时时间会转移到新key上面。
如果key被RENAME命令修改,比如原来就存在Key_A,然后调用RENAME Key_B Key_A命令,这时不管原来Key_A是永久的还是设置为超时的,都会由Key_B的有效期状态覆盖。

4.刷新过期时间
对已经有过期时间的key执行EXPIRE操作,将会更新它的过期时间。

5.过期精度
在 Redis 2.4 及以前版本,过期期时间可能不是十分准确,有0-1秒的误差。
从 Redis 2.6 起,过期时间误差缩小到0-1毫秒。

6.外界因素对过期时间影响
Keys的过期时间使用Unix时间戳存储(从Redis 2.6开始以毫秒为单位)。这意味着即使Redis实例不可用,时间也是一直在流逝的。
要想过期的工作处理好,计算机必须采用稳定的时间。 如果你将RDB文件在两台时钟不同步的电脑间同步,有趣的事会发生(所有的 keys装载时就会过期)。
即使正在运行的实例也会检查计算机的时钟,例如如果你设置了一个key的有效期是1000秒,然后设置你的计算机时间为未来2000秒,这时key会立即失效,而不是等1000秒之后。

7.Redis如何淘汰过期的keys
Redis keys过期有两种方式:被动和主动方式。
当一些客户端尝试访问它时,key会被发现并主动的过期。
当然,这样是不够的,因为有些过期的keys,永远不会访问他们。无论如何,这些keys应该过期,所以定时随机测试设置keys的过期时间。所有这些过期的keys将会删除。
具体就是Redis每秒10次做的事情:
1).测试随机的20个keys进行相关过期检测。
2).删除所有已经过期的keys。
3).如果有多于25%的keys过期,重复步奏1.
这是一个平凡的概率算法,基本上的假设是,我们的样本是这个密钥控件,并且我们不断重复过期检测,直到过期的keys的百分比低于25%,这意味着,在任何给定的时刻,最多会清除1/4的过期keys。

8.在复制AOF文件时如何处理过期
为了获得正确的行为而不牺牲一致性,当一个key过期,DEL将会随着AOF文字一起合成到所有附加的slaves。在master实例中,这种方法是集中的,并且不存在一致性错误的机会。
然而,当slaves连接到master时,不会独立过期keys(会等到master执行DEL命令),他们任然会在数据集里面存在,所以当slave当选为master时淘汰keys会独立执行,然后成为master。

彻底理解Redis有效期问题相关推荐

  1. cxgrid主从表 点+号展开_深入理解Redis主从复制

    一.背景 前面的文章中,我们介绍过Redis的持久化机制,它可以实现Redis实例数据的crash-safe.但是这里有一个问题,就是Redis其实还存在着单点故障问题,比如说Redis的硬盘坏掉了, ...

  2. redis集群扩容和缩容_深入理解Redis Cluster集群

    一.背景 前面的文章<深入理解Redis哨兵机制>一文中介绍了Redis哨兵集群的工作原理,哨兵集群虽然满足了高可用的特性,但是依然存在这样的问题:即数据只能往一个主节点上进行写入. 只能 ...

  3. curl 请求没反应_理解Redis的反应堆模式

    本文首发于: 理解Redis的反应堆模式​mp.weixin.qq.com 微信公众号:后端技术指南针 欢迎关注 接收最新文章! 1. Redis的网络模型 Redis基于Reactor模式(反应堆模 ...

  4. 深入理解redis复制原理

    深入理解redis复制原理 1.复制过程 2.数据间的同步 3.全量复制 4.部分复制 5.心跳 6.异步复制 1.复制过程 从节点执行 slaveof 命令. 从节点只是保存了 slaveof 命令 ...

  5. Redis学习(一)—生活中实用场景帮助理解redis的五种基本数据类型

    Redis实例目录 (一)String (1)业务场景1--分库分表后获取唯一id (2)业务场景2--数据时效性设置 (3)业务场景3--高频数据访问显示 实现方式一 实现方式二 (二)Hash ( ...

  6. 深入浅出理解Redis

    深入浅出理解Redis 一.概念: redis是一款高性能的NOSQL系列的非关系型数据库 1.1.什么是NOSQL NoSQL(NoSQL = Not Only SQL),意即"不仅仅是S ...

  7. 【死磕 Redis】------ 理解 Redis 的内存

    原文:https://www.topjava.cn/category/1391389927996002304 『chenssy』 我们知道 Redis 的所有数据都存储在内存中,内存是我们系统中的一个 ...

  8. 深入理解Redis Cluster和Jedis Cluster

    本文转载自:https://zhuanlan.zhihu.com/p/69800024 Redis Cluster是Redis官方提供的集群解决方案.由于业务的飞速增长,单机模式总会遇到内存.性能等各 ...

  9. 深入理解Redis主键失效原理及实现机制

    2019独角兽企业重金招聘Python工程师标准>>> 作为一种定期清理无效数据的重要机制,主键失效存在于大多数缓存系统中,Reids也不例外.在Redis提供的诸多命令中, EXP ...

最新文章

  1. 微软MCITP系列课程(四)磁盘系统管理
  2. HDOJ 2176 取石子游戏
  3. YOLOv2和YOLOv3效果对比
  4. 【机器学习】3万字长文,PySpark入门级学习教程,框架思维
  5. Linux节点之间无密码问题,Linux下多节点SSH无密码互联实现
  6. String和string的区别
  7. php网站搭建致命错误203终止,PHP致命错误:无法重新分配$this
  8. Object C学习笔记11-数组
  9. 语言 ota_荣威RX5 PLUS使用最新的家族设计语言,给人更年轻时尚的感觉
  10. 计算机视觉实习面经【微软/阿里/腾讯】
  11. 【鲲鹏 DevKit黑科技解读】│如何实现全链路系统问题90%精准诊断?
  12. fetchxml 汇总_Dynamic CRM 2013学习笔记(十七)JS读写各种类型字段方法及技巧
  13. Hibernate在配置表映射文件时cascade的类型及意义
  14. 安装idea(最新版IntelliJ IDEA)编译器(详细到每步)
  15. 多种方法去除按钮以及链接点击时虚线
  16. book mac pro怎么重装系统_苹果13英寸新MacBook Pro怎么重装win7系统
  17. 德州农工大学计算机专业研究生,德州农工大学计算机工程(无论文)理学硕士研究生申请要求及申请材料要求清单...
  18. 集成显卡和独立显卡的区别
  19. Linux系统快速查看CPU和内存使用情况,附各参数详解
  20. 惠普HP LaserJet Pro M405d 打印机驱动

热门文章

  1. 网管工具——Untangle
  2. 微博时光机定时发送微博
  3. 标准h5的定位_HTML5定位(浏览器定位技)术探讨
  4. 开源免费WMS仓库管理系统
  5. redis之如何实现消息队列
  6. airpods pro是按压还是触摸_山寨版AirPods Pro拆解:真是一绝!
  7. Acrobat Pro DC 2021 for Mac(专业PDF编辑软件)
  8. 公路施工时水泥路肩培土两用机在做的工作概况
  9. 面试官问:前后端分离项目,有什么优缺点?
  10. 【Basler相机】帧率太低解决方案