redis的原理分析-过期时间的设置

本文详细介绍了Redis中过期时间的设置与管理,包括expire、TTL、persist等命令的使用,以及过期时间的原理和两种删除过期键的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

过期时间的设置

在redis中提供了expire命令的设置一个键的过期时间,到期以后redis会自动删除他,这个在我们的实际使用过程中得非常多

expire命令的使用方法为

expire key seconds

其中seconds参数表示过期的时间,单位秒

expire返回值为1表示设置成功,0表示设置失败或者键不存在

如果向知道一个键还有多久时间被删除,可以使用TTL命令

 

TTL key

当键不存在,TTL会返回2

对于没有给键指定设置过期时间的,通过TTL会返回-1

如果想取消键的过期时间,可以使用persist命令,如果该命令执行成功或者成功清除了过期时间,执行TTL会返回1,否则返回0(键不存在,或者本身就是永久的)

expire命令的时间必须是整数,所以最小单位是1秒,如果需要更小的单位,来查看键的过期时间,可以使用pexpire,pexpire的单位是毫秒,对应的PTTL查看剩余时间的毫秒值

还有一个针对字符串独有的过期时间的设置

setex(String key ,int seconds,String value)

 

过期时间的原理

redis中的主键失效时间是如何实现的?失效的主键是如何删除的,实际上,redis删除失效的主键方法有2种

消极方法

在主键被访问时,发现该主键的过期时间已失效,那么久删除它

积极方法

周期性的从设置了失效时间的主键中选择一部分失效的主键删除

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

1.随机测试20个带有过期时间的key

2.删除其中已经过期的key

3.如果超过25%(20个的25%)的key被删除,则重复执行步骤1;

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值