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次以下操作:
- 测试随机的20个keys进行相关过期检测。
- 删除所有已经过期的keys。
- 如果有多于25%的keys过期,重复步奏1.
这是一个普通的概率算法,基本上的假设是,我们的样本是这个key 空间,并且我们不断重复进行过期检测,直到过期的keys的占比低于25%,这意味着,在任何给定的时刻,最多会清除1/4的过期keys。