Redis 过期时间

设置过期时间(刷新过期时间)

expire k1 100
为一个无效的key设置过期时间,那么过期时间也无效

移除过期时间(使永不过期)

persist k1
为一个无效的key移除过期时间也是徒劳

查看过期时间

ttl k1
无效key的过期时间为: -2
永不过期key的过期时间为: -1

过期时间精度

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

Redis 如何淘汰过期的keys

Redis keys过期有两种方式:被动和主动方式。

主动

当一些客户端尝试访问它时,key会被发现并主动的过期。

被动

当然,这样是不够的,因为有些过期的keys,永远不会访问他们。 无论如何,这些keys应该过期,所以定时随机测试设置keys的过期时间。所有这些过期的keys将会从密钥空间删除。

具体就是Redis每秒执行10次以下操作:
  1. 测试随机的20个keys进行相关过期检测。
  2. 删除所有已经过期的keys。
  3. 如果有多于25%的keys过期,重复步奏1.

这是一个普通的概率算法,基本上的假设是,我们的样本是这个key 空间,并且我们不断重复进行过期检测,直到过期的keys的占比低于25%,这意味着,在任何给定的时刻,最多会清除1/4的过期keys。