1.4双写一致
概念:当修改了数据库中的数据后,也要修改缓存中的数据,保持数据库与缓存中数据的一致性
-
读取操作:缓存命中,直接返回,未命中查询数据库,写入缓存,设置超时时间
-
写入操作:延迟双删
延迟双删(注意点):
1.先删除缓存还是先操作数据库
2.为什么要删除两次缓存
保证在缓存中不会出现脏数据
缺点:而延时双删虽然极大可能的控制了脏数据的出现,但是还是会有少部分情况出现脏数据,因为延时的时间不确定,做不到强一致
解决方案:
强一致性的, 采用Redisson提供的读写锁
共享锁:读锁readLock,加锁之后,其他线程可以共享读操作排他锁:独占锁writeLock也叫,加锁之后阻塞其他线程读写操作
允许延时一致的业务,采用异步通知
存删除使用MQ中间中间件,更新数据之后,通知缓
装为mysql的一个从节点,canal通过读取binlog数据更新缓存利用canal中间件,不需要修改业务代码,伪