缓存和数据库的数据一致问题笔记
数据库与redis 数据不一致问题 参考 25 | 缓存异常(上):如何解决缓存和数据库的数据不一致问题? (geekbang.org)
1.先删除缓存再更新或删除数据库,如果删除数据库失败,其他线程读取到数据库的旧值,我觉得不应该叫旧值,都没有更新成功,数据库事务应该要回滚,这次业务应该算失败。对业务没有影响。
2.先删除缓存再更新数据库的并发场景,需要延迟双删。延迟这个时间不好控制,也会出现早删除,也会造成数据不一致。
3.先更新数据库,再删除缓存,需要保持原子性,可以采用队列来保持最终一致性。
4.先更新数据库,后删除缓存,会出现并发读,数据库已经更新但缓存更新,可以采用将读写操作写到队列,队列来保证操作的有序性,需要考虑性能。
5.对于有并发读写请求,有两个思路,分布式锁来限制并发。或者采用redis读写,mysql只做备份,保持最终一致性。这需要考虑redis的高可用。
分类:
golang学习笔记与总结
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?