Redis 过期删除与内存淘汰

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,不会主动删除

posted @ 2023-09-12 17:12  xiuer211  阅读(22)  评论(0)    收藏  举报