缓存和数据库双写不一致,怎么解决

缓存可以提升性能,缓解数据库压力,但是同时缓存也会出现「缓存和数据库数据不一致」的问题。当客户端发送一个数据修改的请求,我们不仅要修改数据库,还要一并操作(修改/删除)缓存。对数据库和缓存的操作又存在一个顺序的问题:到底是先操作数据库还是先操作缓存

一、缓存的作用

大部分面向公众的互联网系统,其并发请求数量与在线用户数量都是正相关的,而 MySQL 能够承担的并发读写量是有一定上限的,当系统的访问量超过一定程度的时候,纯 MySQL 就很难应付了。绝大多数互联网系统都是采用 MySQL+Redis 这对经典组合来解决高并发问题的。

Redis 作为 MySQL 的前置缓存,可以应对绝大部分查询请求,从而在很大程度上缓解 MySQL 并发请求的压力。

缓存可以提升性能,缓解数据库压力,但是同时缓存也会出现「缓存和数据库数据不一致」的问题。如果数据不一致,就会导致应用在缓存中读取的不是最新的数据,这显然是不能接受的。

二、缓存和数据库双写不一致,怎么解决

1、先更新缓存,再更新 DB

这个方案我们一般不考虑。原因是更新缓存成功,更新数据库出现异常了,

导致缓存数据与数据库数据完全不一致,而且很难察觉,因为缓存中的数据一直都存在。

2、先更新 DB,再更新缓存

这个方案也我们一般不考虑,原因跟第一个一样,数据库更新成功了,缓存更新失败,同样会出现数据不一致问题。

到这里可以看出,无论这两个操作的执行顺序谁先谁后,只要「第二步的操作」失败了,就会导致客户端读取到旧值。

我们继续分析,除了「第二步操作失败」的问题,还有什么场景会影响数据一致性:并发问题。

来源:https://blog.csdn.net/Zhuxiaoyu_91/article/details/127780117

延伸阅读

什么是PHP

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。

文章标题:缓存和数据库双写不一致,怎么解决,发布者:E.Z,转载请注明出处:https://worktile.com/kb/p/54047

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
E.ZE.Z站长
上一篇 2023年6月7日
下一篇 2023年6月7日

相关推荐

  • JAVA中print和return有什么区别

    区别是:print作用是将数据输出,展示在控制台上,即打印在你能看到的界面上。return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。return作为脚本单独运行时则需要print函数才能显示,但是在交互模式下,return的结果会自动打印出来。…

    2023年2月12日
    25500
  • rdf和图数据库有什么关系

    rdf和图数据库的关系是:一、RDF是图数据库中的一种数据模型;二、图数据库能够高效地处理RDF数据;三、图数据库能够支持SPARQL查询语言;四、图数据库能够支持RDF数据的可视化;五、图数据库能够提供更好的数据管理和安全性。 一、RDF是图数据库中的一种数据模型 RDF是一种基于图的数据模型,它…

    2023年5月30日
    16900
  • mysql workbench怎么用

    MySQL Workbench是一款流行的MySQL数据库设计和管理工具。本文将介绍以下几个方面:1、安装和启动MySQL Workbench;2、连接到MySQL数据库;3、使用SQL编辑器执行查询;4、使用ER图设计数据库;5、管理和监控数据库;6、常见问题和解决方案。 1、安装和启动MySQL…

    2023年8月17日
    16100
  • spring 和 springboot 有哪些区别

    spring 和 springboot 的区别是: Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。而SpringBoot基于Spring4.0设计,不仅继承了Sprin…

    2023年2月13日
    24400
  • 怎么做知识管理库

    做知识管理库的工具有:一、onenote;二、Evernote;三、有道云笔记;四、石墨文档;五、幕布;六、蚂蚁笔记;七、为知笔记。知识管理是对知识、知识创造过程和知识的应用进行规划和管理的活动,好的知识管理工具能帮助我们更好地进行知识管理。 一、onenote 适用于您的设备的数字记录笔记应用,O…

    2023年4月30日
    5700
  • 数据库提供 HTTP 接口有什么意义

    有以下意义:一、跨平台;二、安全性;三、灵活性;四、可扩展性;五、性能。HTTP 协议是一种跨平台的协议,几乎所有的应用程序都支持 HTTP 协议。当数据库提供 HTTP 接口时,不需要安装任何专用的客户端或驱动程序,只需要使用 HTTP 请求就可以访问数据库。 一、跨平台 HTTP 协议是一种跨平…

    2023年5月30日
    8200
  • 如何绘制路线图

    可以用:Microsoft PowerPoint;Microsoft Visio;Lucidchart;Trello;Notion。Microsoft PowerPoint是一种常用的演示软件,也可以用于制作路线图。它的优点是易于使用,易于导出和共享,而且大多数人都熟悉它。在PowerPoint中,…

    2023年3月30日
    15000
  • 研发项目管理工程师是什么

    研发项目管理工程师是指负责研发项目的全流程管理的工程师。他们需要具备项目管理、工程技术和研发技术等多方面的知识和技能,以便能够有效地规划、组织、执行和监控研发项目,确保项目能够按时按质地完成。 研发项目管理工程师是指负责研发项目的全流程管理的工程师。他们需要具备项目管理、工程技术和研发技术等多方面的…

    2023年4月30日
    7100
  • confluence如何固定表头

    confluence固定表头的方法是:先选中表格,插入宏“Tableenhancer”,在“Tableenhancer”宏编辑界面,找到“Number of rows to keep visible”,设置固定的行数就可以了。Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业…

    2023年3月30日
    85200
  • 什么类型的APP不能开发

    什么类型的APP不能开发:1、黄赌毒APP开发需求不能接;2、明知是违法盈利APP还提供技术支持;3、非正规的官方APP开发;4、涉及到身份信息上传的APP。黄赌毒APP开发需求不能接,这类APP不多说,是绝对不能开发的。 一、黄赌毒APP开发需求不能接 这类APP不多说,是绝对不能开发的,那么你会…

    2023年5月9日
    3500

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部