Redis 5分钟掌握内存管理策略(八)

194 阅读1分钟

淘汰策略

策略描述
volatile-lru从已设置过期时间的 KV 集中优先对最近最少使用(less recently used)的数据淘汰
volitile-ttl从已设置过期时间的 KV 集中优先对剩余时间短(time to live)的数据淘汰
volitile-random从已设置过期时间的 KV 集中随机选择数据淘汰
allkeys-lru从所有 KV 集中优先对最近最少使用(less recently used)的数据淘汰
allKeys-random从所有 KV 集中随机选择数据淘汰
noeviction(默认)不淘汰策略,若超过最大内存,返回错误信息

删除策略

策略描述
定时删除在设置键的过期时间的同时,创建一个定时器 timer). 让定时器在键的过期时间来临时,立即执行对键的删除操作
惰性删除放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键
定期删除每隔一段时间程序就对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定
  • 定时删除对内存使用率有优势,但是对 CPU 不友好;
  • 惰性删除对内存不友好,如果某些键值对一直不被使用,那么会造成一定量的内存浪费;
  • 定期删除是定时删除和惰性删除的折中。

在redis中会使用惰性删除和定期删除两种方式