发生缓存数据库双写不一致原因:
有多个线程并发情况下同时对数据库写操作并更新缓存
解决方法方法:
1.更新的线程做更新时做删除操作,查询的线程查询缓存为空就去查数据库在更新缓存
这种情况还是可能会发生更新缓存时导致缓存数据库不一致的可能,概率很小,如果一定要要求缓存与数据库的强一致性,那么就还需要更多的解决办法比如:
1.延迟双删:删缓存 -> 操作数据库 -> 延时再删一次
2.加读写锁:读多写少的情况才使用,读多写多效率会很低
3.加锁:效率最低,相当于把所有并行的操作变成串行
4.内存队列:实现太复杂,成本很高
5.使用阿里的canal中间件:需要单独部署,学习成本高