Go 缓存与数据库一致性:Cache Aside、延迟双删怎么实现
常见模式:① Cache Aside(旁路缓存):读(缓存 miss → 查库 → 写缓存);写(先更新 DB,再删缓存——延迟双删防并发不一致);② 最终一致:异步消息(DB binlog → MQ → 更新缓存)、Canal 监听;③ 强一致:DB 为主,缓存只加速(读穿透)。坑:缓存与 DB 双写不一致、缓存雪崩(过期时间加随机)、穿透(布隆过滤器/空值缓存)、击穿(单 key 热点加锁重建)。原则:能容忍最终一致用异步,强一致避免用缓存做数据源。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。