淘汰策略
| 策略 | 描述 |
|---|---|
| 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中会使用惰性删除和定期删除两种方式