过期的键怎样删除?内存满了有哪些淘汰策略?
先自己想一想,再看参考要点
参考要点
- 惰性删除:访问键时检查,过期就删除并当作不存在
- 定期删除:每秒 10 次,每次抽 20 个设置了过期时间的键,过期的超过 10% 就继续下一批,每次最多占 25% 的 CPU
- 内存达到 maxmemory 后按淘汰策略处理,有 volatile 和 allkeys 两个范围的 lru、lfu、random,以及 volatile-ttl 和默认的 noeviction(SET 这类可能增加内存的命令返回 OOM 错误,GET、DEL 照常执行),Redis 4.0 到 7.x 共 8 种,8.6 又增加了按最近修改时间淘汰的 allkeys-lrm、volatile-lrm
- 只作缓存时常用 allkeys-lru