缓存一致性问题

news2024/11/27 7:33:16

在开发中我们为了提高查询效率,经常使用缓存(典型的缓存技术redis),但是在缓存的使用中我们经常遇到缓存和一致性问题(缓存的数据和数据库的数据不一致)

常见的解决方式
        1.双写模式:更新数据库时候同时更新缓存

        2.失效模式:更新数据的时候删除缓存

但是不管那种模式在并发情况都会有问题:        双写模式问题:在并发写的情况由于卡顿或者其他原因导致线程2线先执行完毕,线程一写入的缓存就没有线程2最新的数据,此时就出现了脏数据

        失效模式问题:在写写读的情况同样会造成脏数据

 

   问题解决办法:

                1.给缓存加入过期时间,达到最终的一致性,这种解决需要能容忍一定时间的数据不一致

                2.加锁达到一致,这种解决方式会导致并发降低

     注意:不管是那种解决方式都会有一点瑕疵,如数据的最终一致性(短时间内数据不同),加锁降低并发

最终解决方式:如果在开发过程中为了效率必须使用缓存同时必须保证缓存的数据的一致性(强一致),可以使用Canal(阿里巴巴开源)+binlog(数据库日志),通过让Canal监听binlog的修改来保证数据的一致性。

 

 

 补充:Canal在实际开发中经常用于数据的异构处理(就是不同的用户展示的数据不一致,比如:一些购物类的网站,会根据用户的访问习惯在首页推荐不同的商品)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/940622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源家政小程序源码仿58到家分享 带安装教程完整版

今天继续分享一个家政公司小程序源码系统,完全开源的,可以二次开发,支持多商家,直接在线预约,功能很是强大。 家政小程序源码系统是一款基于微信小程序平台的家政服务管理系统,旨在帮助家政服务公司更好地管…

C语言题目--2

CFLAGS“-Wall” 是将警告更多的显示出来 make ex1 会寻找ex1.c,然后去编辑它 需要编译Makefile,在执行make时,会在目录下寻找Makefile,根据定义去执行make hello是命名规则,下面是具体的命令 注意:用Tab键…

【FreeRTOS】【应用篇】消息队列【上篇】——队列基本概念、创建和删除

文章目录 前言一、什么是消息队列,有什么用1. 概念2. 作用3. 特点 二、消息队列的深入原理1. 消息队列的存储结构2. 出入队列的相关操作① 入队操作:② 发送紧急消息:③ 读取队列操作: 3. 关于队列的阻塞机制① 读操作的阻塞机制&…

checkstyle检查Java编程样式:空格检查

一个空行不能有空格 例如,第22行是空行,有4个空格,checkstyle检查报错: 将4个空格删掉,checkstyle检查通过: 行末尾不能有空格 将行末尾的空格删掉即可消除这个违反项: 用WhitespaceAfte…

驱动作业,按键中断阻塞LED灯

驱动程序 #include "head.h" #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include <linux/device.h> #include <linux/export.h> #in…

抖音转化率是什么意思,怎么计算,如何提升效果?

抖音转化率是指在抖音平台上进行某种特定行为的用户数量与总用户数量之间的比率。作为短视频搜索领域的最大平台&#xff0c;抖音转化率一直是企业用户的攻克难题。 茹莱神兽认为&#xff0c;想要提升抖音的转化率&#xff0c;就需要研究它的转化路径。常见的转化行为包括点击…

Java Predicate用法

Java Predicate用法 无需写sql.只要拼接条件就行 Java Predicate用法

未来智造:珠三角引领人工智能产业集群

原创 | 文 BFT机器人 产业集群是指产业或产业群体在地理位置上集聚的现象&#xff0c;产业集群的研究对拉动区域经济发展&#xff0c;提高区域产业竞争力具有重要意义。 从我国人工智能产业集群形成及区域布局来看&#xff0c;我国人工智能产业发展主要集聚在京津冀、长三角、…

澳大利亚以及美国纽扣电池新标准讲解!

一、什么是澳大利亚纽扣电池认证标准&#xff1f; 答&#xff1a;近期很多商家的产品无论是成品还是单独的纽扣电池&#xff0c;只要成品中带有纽扣的电池的功能都是需要办理澳洲的认证的&#xff0c;最近抽查的比较严格&#xff0c;因为电池测试这方面是为降低与使用纽扣电池相…

【优选算法】—— 二分查找

序言&#xff1a; 本期&#xff0c;我们将要介绍的是有关 二分查找算法 并通过题目帮组大家更好的理解&#xff01; 目录 &#xff08;一&#xff09;基本介绍 1、基本思想 2、解题流程 3、复杂度以及注意事项 &#xff08;二&#xff09;题目讲解 1、在排序数组中查找…

微信好友误删别担心,这几个方法助你轻松加回!

有些人一生气&#xff0c;一怒之下就把好友给删了。事后又想加回来&#xff0c;那要怎么办呢&#xff1f; 删除的好友怎么才能加回来&#xff1f;还是有一些办法的&#xff0c;小伙伴们可以试试&#xff01; 对方的微信号肯定是记不住的&#xff0c;要加回来肯定是一脸糊涂了。…

【C++】C++ 引用详解 ⑧ ( 普通引用与常量引用 | 常量引用概念与语法 )

文章目录 一、普通引用1、概念说明2、代码示例 - 普通引用 二、常量引用1、常量引用引入2、常量引用概念与语法2、代码示例 - 常量引用不可修改 一、普通引用 1、概念说明 之前的 【C】C 引用详解 ① ~ ⑦ 博客中 , 讲解的都是 普通引用 , 也就是 将 普通变量 赋值给 引用 , 过…

docker容器一直在restarting

chown: changing ownership of ‘/var/lib/mysql/’: Permission denied 问题也同样处理 参考

【Zblog搭建博客网站】windows环境搭建博客并上线

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员&#xff0c;自己搭建网站制作网页是绕…

【管理运筹学】第 6 章 | 运输问题(3,表上作业法 | 最优解的判断)

文章目录 引言二、表上作业法2.2 最优解的判断2.2.1 闭回路法2.2.2 位势法 写在最后 引言 承接前文&#xff0c;我们继续学习表上作业法的第二步 —— 最优解的判断。 二、表上作业法 表上作业法的求解工作在运输表上进行&#xff0c;运输问题解的每一个分量&#xff0c;都唯…

MFC-RIBBON/QT混合编程‘完美’方案

[工程建立] 在&#xff36;&#xff23;用向导生成一个&#xff31;&#xff34; &#xff27;&#xff35;&#xff29;程序&#xff0c;将里面的代码文件等删除&#xff08;.vcxproj等保留&#xff09;在&#xff36;&#xff23;用向导生成另一个&#xff2d;&#xff26;…

怎么学习黑客?最全黑客自学路线

谈起黑客&#xff0c;可能各位都会想到&#xff1a;盗号&#xff0c;其实不尽然&#xff1b;黑客是一群喜爱研究技术的群体&#xff0c;在黑客圈中&#xff0c;一般分为三大圈&#xff1a;娱乐圈 技术圈 职业圈。 娱乐圈&#xff1a;主要是初中生和高中生较多&#xff0c;玩网恋…

乱糟糟的YOLOv8-detect和pose训练自己的数据集

时代在进步&#xff0c;yolo在进步&#xff0c;我还在踏步&#xff0c;v8我浅搞了一下detect和pose&#xff0c;记录一下&#xff0c;我还是要吐槽一下&#xff0c;为啥子这个模型就放在了这个文件深处&#xff0c;如图。 以下教程只应用于直接应用yolov8&#xff0c;不修改。…

k8s之存储篇---数据卷Volume

数据卷概述 Kubernetes Volume&#xff08;数据卷&#xff09;主要解决了如下两方面问题&#xff1a; 数据持久性&#xff1a;通常情况下&#xff0c;容器运行起来之后&#xff0c;写入到其文件系统的文件暂时性的。当容器崩溃后&#xff0c;kubelet 将会重启该容器&#xff…

C++中为什么有模板的函数不能和.h文件分离,即分别声明和定义

目录 1.查看问题 2.探索问题 3.解决问题 1.查看问题 1.先看下面三个文件 stack.h stack.cpp test.cpp 2.探索问题 有了解的小伙伴应该知道大概率是在预处理&#xff0c;编译&#xff0c;汇编&#xff0c;链接中编译环节出错了&#xff0c;它在其他文件中无法通过定义找到函…