Redis 过期删除与内存淘汰
Redis 使用的过期删除策略是什么?
redis将有过期时间的key带上过期时间的时间戳保存到一个字典中。
主要分为两大类:
一个是惰性删除,不会主动检查key是否过期,cpu使用到的时候先检查是否过期,过期了删除,没有过期返回
一个是定期删除,会定期检查key是否过期
redis使用的是惰性+定期删除
惰性删除策略的优缺点
优点:不会影响很多性能
缺点:如果已经过期的key一直没用到,占用的内存不会释放,浪费内存
什么是定期删除策略?
会定期检查key是否过期,会随机抽一批key中检查是否过期,过期就删掉,如果删除的key大于25%,就会重复这个过程,指导比例小于25%,为了这个循环不会一直发生,增加了一个删除时间上限 25ms,如果超过25ms退出定期删除过程
定期删除策略优缺点
优点:减少内存浪费
缺点:定期删除频率难以掌握,低了导致过期key很多,高了影响性能
Redis 持久化时,对过期键会如何处理的?
- rdb
- 生成阶段,不保存过期key
- 加载阶段,检查key是否过期,过期的话,如果是主库,不会加载,如果是从库,会加载
- aof
- 生成阶段:如果key过期,会添加del命令,删除key
- 重写阶段:检查key是否过期,过期的key不会添加到数据库中
Redis 主从模式中,对过期键会如何处理?
如果是主库,会发送删除命令给从库
如果是从库,从库只会接收到删除命令才会删除过期key,不会主动删除
标签:删除,过期,Redis,定期,内存,key From: https://www.cnblogs.com/xiuer211/p/17697262.html