redis集合数据过期_Redis 对过期数据的处理

Redis 使用惰性删除和定期删除策略处理过期数据,惰性删除仅在访问时检查,定期删除随机测试并删除过期键。内存超过限制时,Redis 采取内存淘汰策略,如 LRU 和 LFU,来决定删除哪些键。LRU 是近似实现,LFU 则考虑访问频率。可通过配置 maxmemory-policy 设置策略。
摘要由CSDN通过智能技术生成

Redis 对过期数据的处理

在 redis 中,对于已经过期的数据,Redis 采用两种策略来处理这些数据,分别是惰性删除和定期删除

惰性删除

惰性删除不会去主动删除数据,而是在访问数据的时候,再检查当前键值是否过期,如果过期则执行删除并返回 null 给客户端,如果没有过期则返回正常信息给客户端。

它的优点是简单,不需要对过期的数据做额外的处理,只有在每次访问的时候才会检查键值是否过期,缺点是删除过期键不及时,造成了一定的空间浪费。

源码

robj *lookupKeyReadWithFlags(redisDb *db, robj *key, int flags) {

robj *val;

if (expireIfNeeded(db,key) == 1) {

/* Key expired. If we are in the context of a master, expireIfNeeded()

* returns 0 only when the key does not exist at all, so it's safe

* to return NULL ASAP. */

if (server.masterhost == NULL) {

server.stat_keyspace_misses++;

notifyKeyspaceEvent(NOTIFY_KEY_MISS, "keymiss", key, db->id);

return NULL;

}

/* However if we are in the cont

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值