缓存一致性

缓存一致性缓存一致性是用来解决缓存和数据库的同步问题###双写模式双写模式是指数据修改后,先写到数据库再写到缓存中问题:在并发情况下,由于卡顿等原因,双写模式可能在缓存中丢失写的先后性,从而出现脏数据(由于数据库中数据没问题,因此在缓存过期后再次查询能得到修正)解决:1.加锁,只有写入数据库写入缓

大家好,欢迎来到IT知识分享网。

缓存一致性是用来解决缓存和数据库的同步问题

双写模式

双写模式是指数据修改后,先写到数据库再写到缓存中

缓存一致性

问题:在并发情况下,由于卡顿等原因,双写模式可能在缓存中丢失写的先后性,从而出现脏数据(由于数据库中数据没问题,因此在缓存过期后再次查询能得到修正)

解决:1.加锁,只有写入数据库–写入缓存执行完后,再允许别的线程写入数据库
2.如果对数据一致性要求不高,可以等待缓存过期

失效模式

失效模式是指数据修改后,删除缓存数据,下次查询时再写入到缓存中

缓存一致性

问题:A:写数据db1,删缓存
B:在A删缓存之前开始写数据db2(卡顿,还没写完)
C:读缓存(db1),B写完数据并且删了缓存,C再更新缓存
此时读到的数据还是db1;

解决:1.对写数据和删缓存加锁,保证整个过程的完整性;但会使整个过程变得笨重,如果经常修改的数据,不要加缓存,可以直接读数据库;
2.设置缓存过期时间

缓存一致性终极解决方案:

其实归根到底就是缓存不能及时正确的获取数据库的最新更新,我们可以使用Canal解决这个问题

缓存一致性

Canal是一个中间件,可以用来保证数据库的可见性,一旦数据库被更新就通知缓存,可以实现较强的一致性,但增加了新的系统负担

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31350.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信