1.如何保证双一致性
(1)先更新数据库,再更新缓存:并发时,会将脏数据刷到缓存。
(2)先更新缓存,后更新数据库:如果缓存更新成功,数据库失败,导致数据不一致;
(3)先删除缓存,再更新数据库;
A写,删除缓存;B查发现缓存不在,查数据库旧值,将旧值写入缓存;A新值到数据库;导致数据不一致,如果不给缓存设过期时间,永远是脏数据。
解决方案:
(一)延时双删
自行评估项目的读数据业务逻辑耗时,写的休眠时间再读业务逻辑耗时上,再加几百毫秒即可。
如果是用的主从复制架构
主要发生在B去查询数据,由于主从同步未完成,拿到的还是旧值。
主从复制的解决方案: