缓存与数据库双写不一致

发生缓存数据库双写不一致原因:

有多个线程并发情况下同时对数据库写操作并更新缓存


Snipaste_2021-02-28_22-56-51.png

解决方法方法:

1.更新的线程做更新时做删除操作,查询的线程查询缓存为空就去查数据库在更新缓存


Snipaste_2021-02-28_22-57-49.png

这种情况还是可能会发生更新缓存时导致缓存数据库不一致的可能,概率很小,如果一定要要求缓存与数据库的强一致性,那么就还需要更多的解决办法比如:

1.延迟双删:删缓存 -> 操作数据库 -> 延时再删一次
2.加读写锁:读多写少的情况才使用,读多写多效率会很低
3.加锁:效率最低,相当于把所有并行的操作变成串行
4.内存队列:实现太复杂,成本很高
5.使用阿里的canal中间件:需要单独部署,学习成本高

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容