| 读 | GET 未命中则查库并 SET 带 TTL |
|---|---|
| 写 | 更新库后 DEL 缓存 |
| 要点 | 删除失败要重试或延迟双删 |
读路径示例
读路径示例
redis-cli GET user:1001
# 未命中:应用查库后写回
redis-cli SET user:1001 '{"name":"alice"}' EX 600为什么删而不更新:并发写场景下更新缓存容易留下旧值覆盖新值的窗口,删除让下次读自然回源,代价是一次穿透。
读路径先查缓存,未命中回源数据库并写回缓存;写路径先更新数据库再删除缓存(而不是更新缓存),删除失败要有重试兜底。
| 读 | GET 未命中则查库并 SET 带 TTL |
|---|---|
| 写 | 更新库后 DEL 缓存 |
| 要点 | 删除失败要重试或延迟双删 |
redis-cli GET user:1001
# 未命中:应用查库后写回
redis-cli SET user:1001 '{"name":"alice"}' EX 600