Redis的数据过期淘汰策略
Redis 的数据过期策略 Redis 采用 「惰性删除 + 定期删除」 两种策略相结合的方式,在 CPU 性能开销 与 内存占用 之间取得平衡。 一、惰性删除(Lazy Expiration) 当客户端访问或修改某个键时,Redis 会在操作前调用 expireIfNeeded() 函数检查该键是否已过期: 若已过期: Redis 会立即删除该键,然后向客户端返回 null。 删除方式由配置项 lazyfree-lazy-expire 决定: 若开启(yes),则采用 异步删除; 若关闭(no),则采用 同步删除。 若未过期: 直接返回该键对应的正常值,不做任何额外处理。 这种方式的优点是 删除时机精准、不会浪费 CPU 时间; 缺点是:若某些过期键一直未被访问,就无法被清除,会长期占用内存。 二、定期删除(Active Expiration Cycle) 为了解决惰性删除的不足,Redis 还会周期性地扫描部分键空间,清除已过期的数据。 1. 检查频率 Redis 默认每秒执行 10 次过期扫描,这一频率由配置文件 redis.conf 中的参数 hz...



