redis过期时间和删除策略

本文介绍了Redis中四种设置键过期时间的方法,并详细解释了Redis如何通过惰性删除与定期删除相结合的方式管理过期键,确保内存高效利用。

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

在redis中有4种方法可以设置过期时间: 

expire<key> <ttl>: 设置生存时间为ttl秒

pexpire<key><ttl>: 设置生存时间为 ttl毫秒

expireat <key> <timestamp> : 设置过期时间为timestamp所指定的秒数时间戳.

pexpireat<key><timestamp>: 设置过期时间为timestamp所指定的毫秒数时间戳.

其中timestamp为unix时间戳.


redisDb结构的expires字典保存了数据库中所有键的过期时间.它的数据结构由两部分组成:

1.过期字典的键是一个指针,它指向键空间中的某个键对象.

2.过期字典的值是一个long long类型的整数,它保存的就是键的过期时间.


在redis中有三种不同的删除过期键的策略:

1.惰性删除

2.非惰性删除:a.定时删除  b.定期删除


redis服务器采用的策略是惰性删除和定期删除的组合.

惰性删除由db.c/expireIfNeeded函数实现.

定期删除由redis.c/activeExpireCycle函数实现:每当redis的服务器周期性操作redis.c/serverCron函数执行时, activeExpireCycle函数就会被调用,它在规定时间内,分多次 遍历服务器中的各个数据库,从数据库的expires字典中随机检查一部分键的过期时间,并删除其中的过期键.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值