想象你在厨房做菜:Cache-aside 就像自己决定什么时候从冰箱拿菜;
Read-Through 像有个助手,你说要什么他就帮你拿;Write-Behind 像先记在购物清单上,之后再去买。
📖
读取:先查缓存 → 没有就查数据库 → 写入缓存
✏️
更新:先更新数据库 → 删除缓存(不是更新!)
📖
读取:应用只调 cache.get(),缓存库负责查数据库
✏️
写入:通常与 Write-Through 配合,同步写缓存和数据库
三种模式对比
| 模式 |
复杂度 |
性能 |
一致性 |
适用场景 |
| Cache-Aside |
中 |
高 |
中 |
大多数场景 |
| Read-Through |
低 |
中 |
高 |
读多写少 |
| Write-Behind |
高 |
极高 |
低 |
写多、可丢失 |
💡
选择建议:90% 的场景用 Cache-Aside;如果追求代码简洁用 Read-Through;如果是秒杀、点赞这种"能丢数据"的场景才用 Write-Behind。