hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 数据库 - 正文 君子好学,自强不息!

【数据库】redis怎样保证数据一致性

2019-11-21数据库搜奇网39°c
A+ A-
一般来说,只需你用到了缓存,不管是Redis照样memcache,就可能会涉及到数据库缓存与数据的一致性题目,这里我们以Redis为例。

我们该怎样保证Redis与数据库的一致性呢?

So easy: (引荐进修:Redis视频教程)

更新的时刻,先更新数据库,然后再删除缓存。

读的时刻,先读缓存;假如没有的话,就读数据库,同时将数据放入缓存,并返回相应。

乍一看,一致性题目貌似很好的获得了处理。但细致一想,你会发明照样有题目:假如先更新了数据库,删除缓存的时刻失利了怎样办?那末数据库中是新数据,缓存中是老数据,数据涌现不一致了。

革新计划:

先删除缓存,后更新数据库。由于纵然背面更新数据库失利了,缓存是空的,读的时刻会从数据库中从新拉,虽然都是旧数据,但数据是一致的。

所以计划就变成了:

更新的时刻,先删除缓存,然后再更新数据库。

读的时刻,先读缓存;假如没有的话,就读数据库,同时将数据放入缓存,并返回相应。

到这里是否是题目就获得了完全的处理了呢?

实在并没有,在高并发的场景下,会涌现如许的状况:数据发作了变动,先删除了缓存,然后去修正数据库。此时还没来得及修正,一个要求过来了,去读缓存,发明缓存空了,去读数据库,读到了预备修正前的旧数据,而且把旧数据放到了缓存。

随后,数据变动递次完成了数据库的修正。那末完了,这个时刻发作数据不一致了......

处理计划:

针对这类状况,能够先把“修正DB”的操纵放到一个JVM行列,背面读要求过来以后,“更新缓存”的操纵也放进同一个JVM行列,每一个行列,关于一个功课线程,根据行列的递次,顺次实行相干操纵,如许就能够保证“更新缓存”一定是在DB修正以后,以保证数据一致性,细致如下图所示:

以上就是redis怎样保证数据一致性的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
【数据库】redis怎样保证数据一致性

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:

本文来源:搜奇网

本文地址:https://www.sou7.cn/282629.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>