美文网首页
缓存与数据库双写不一致

缓存与数据库双写不一致

作者: 小方块886 | 来源:发表于2021-02-28 23:08 被阅读0次

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

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


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

解决方法方法:

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


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

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

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

相关文章

网友评论

      本文标题:缓存与数据库双写不一致

      本文链接:https://www.haomeiwen.com/subject/myanfltx.html