Appearance
缓存策略
缓存模式
Cache-Aside(旁路缓存)
查询:
1. 查缓存
2. 缓存不存在,查数据库
3. 写入缓存
4. 返回数据
更新:
1. 更新数据库
2. 删除缓存Write-Through(穿透写)
更新时同时写缓存和数据库Write-Behind(后写)
更新时先写缓存,异步写数据库Redis淘汰策略
触发条件
maxmemory < 实际使用内存策略配置
| 策略 | 说明 |
|---|---|
| noeviction | 不淘汰,返回错误 |
| volatile-lru | 只淘汰设置了过期时间的键(LRU) |
| allkeys-lru | 所有键LRU淘汰 |
| volatile-lfu | 只淘汰设置了过期时间的键(LFU) |
| allkeys-lfu | 所有键LFU淘汰 |
| volatile-random | 随机淘汰过期键 |
| allkeys-random | 随机淘汰所有键 |
| volatile-ttl | 淘汰TTL最小的键 |
LRU vs LFU
LRU(Least Recently Used)
最近最少使用,淘汰最久未访问的。
LFU(Least Frequently Used)
最不经常使用,淘汰访问频率最低的。
选择
- 访问频率稳定:LFU
- 访问模式波动大:LRU
- Redis 4.0+推荐LFU
