Redis Expire 原理

栏目: 数据库 · Redis · 发布时间: 7年前

内容简介:为给定的key设置生存时间(timeout),当key过期时,这个key就会自动地被删掉。在Redis术语中,一个关联了timeout的key经常称为“易失的”(volatile)。在Redis中只有删除/覆盖一个key才能修改其timeout,比如:DEL、SET、GETSET和所有的存储(*STORE)命令。这意味着仅修改值而不用一个新的key来替代的话,timeout是不会改变的,比如:INCR、LPUSH、HSET。另外,也可以使用PERSIST命令将timeout移除,使其变成给一个永久的key

简介

为给定的key设置生存时间(timeout),当key过期时,这个key就会自动地被删掉。在 Redis 术语中,一个关联了timeout的key经常称为“易失的”(volatile)。

在Redis中只有删除/覆盖一个key才能修改其timeout,比如:DEL、SET、GETSET和所有的存储(*STORE)命令。这意味着仅修改值而不用一个新的key来替代的话,timeout是不会改变的,比如:INCR、LPUSH、HSET。

另外,也可以使用PERSIST命令将timeout移除,使其变成给一个永久的key。如果是RENAME一个key,则其timeout在rename前后是一致的。比如:RENAME KeyB KeyA,则无论原始的KeyA是否带timeout,它都会被删掉,而KeyB改名为KeyA后继续保留KeyB的timeout。

返回值:

  • 1:成功设置了timeout
  • 0:key不存在

更新生存时间

对一个已经带有timeout的key执行EXPIRE命令,可以为它指定新的生存时间。

时间精度

在Redis 2.4中,过期时间的延迟在1秒内,也就是说即使key过期了仍可能在最后的一秒内被访问到。而在Redis 2.6以后,过期时间的精度降低到1毫秒。

过期与持久

一个key的过期时间信息是以绝对的Unix时间戳存储的,这意味着即使Redis实例没有启动,时间照常流逝。

为了让过期时间正常工作,服务器的时间必须正确设置。如果我们在两台时间不同步的服务器上移动RDB文件,那么可能会发生一些有趣的事情(比如在载入过程中,key已经过期了)。

即使在一台持续运行的服务器上,时间的设置也很重要。比如我们设置一个key的timeout为1000s,然后把服务器的时间改为将来的2000s后,那么这个key也会立即过期。

如何过期

Redis中一个key过期删除主要有两种方式:被动(passive way)和主动(active way)。

被动删除

当客户端尝试查询某个key,然后发现这个key的timeout已经过期了,则这个key会被删除,并返回空。

主动删除

对于那些从未被查询的key,即便它们已经过期,被动方式也无法清除。因此Redis会周期性地随机测试一些key,已过期的key将会被删掉。Redis每秒会进行10次操作,具体的流程:

  1. 随机测试 20 个带有timeout信息的key;
  2. 删除其中已经过期的key;
  3. 如果超过25%的key被删除,则重复执行步骤1;

这是一个简单的概率算法(trivial probabilistic algorithm),基于假设我们随机抽取的key代表了全部的key空间。

Replica和AOF

为了取得一致的行为而避免牺牲一致性(consistency),当一个key过期时,DEL操作会同步到AOF文件和所有关联的Slave实例。按这种方式,key的过期操作都是在Master实例上集中处理,所以就不会有一致性错误。

然而,尽管Slaves并不会独立地删除过期的key(而是等待从Master传来的DEL操作),Slaves仍然保存着每个key的全部状态信息。因此当一个Slave被选举为Master后,它仍然能够独立地删除过期地Key,跟正常的Master一样。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

网络营销实战密码

网络营销实战密码

昝辉Zac / 电子工业出版社 / 2009.1 / 56.00元

本书是作者几年来网络营销实战的总结,与其他网络营销书籍最大不同之处是:只专注于实战,不谈理论。本书分三部分详细介绍了网络营销实用策略和技巧,并分析了大量实战案例。第一部分介绍市场与产品研究,包括用户、市场和竞争对手的调查;产品、目标市场的确定;价格策略;赢利模式等。第二部分讨论以网络营销为导向的网站设计,包括怎样在网站上卖东西、提高转化率,以及网站目标设定等。第三部分研究怎样给网站带来流量,详细讨......一起来看看 《网络营销实战密码》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具