Redis过期删除(淘汰)策略概念和理解,以及key已过期内存未释放的处理方式

在 Redis 中key过期后,不一定会立刻被删除,主要是基于惰性删除、定期删除这两种方式,下面介绍一下这两种策略

一、惰性删除

1、惰性删除是指客户端访问一个key的时候,redis会基于一个叫 expireIfNeeded() 函数选择异步会同步把该key删除

2、由此可见,这意味着过期key的删除是在访问时候进行的,而不是在过期时立即被删掉的

3、毕竟如果 Redis 监控所有的key的话,这样代价太大了

二、定期删除

1、是通过定时器来实现的,定时器每隔一段时间会触发一次检测函数,触发频次根据配置的参数 hz(赫兹) 来确定的,默认每秒触发10次

2、在检测函数中,会随机选择一批key进行检查它们的过期时间,如果key已经过期则直接删除

小结:

1、虽然redis的key过期不会立刻被删除,但不会影响客户端对该key的访问结果,会基于惰性删除(在访问时判断是否已过期)

2、如果发现大量的key已经过期,而内存却没有释放,则可以通过客户端调用 scan 进行全局扫描一次即可释放内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值