如何保证Redis和MySQL数据的一致性刨析

1、常见的缓存更新策略:

定义:主要用来进行redis和mysql的数据同步更新的一些策略
在这里插入图片描述

  1. 内存淘汰:等触发淘汰机制后,刚好淘汰到了用户查询的数据,此时是null,会进行查询数据库并写入到缓存中,此时查询到的数据就是新的,但如果淘汰掉的不是用户查询的数据,每次用户都能够查询到数据,其实这个数据也就是旧数据,数据一致性较差。
  2. 超时剔除:和内存淘汰策略差不多
  3. 主动更新(主要应用策略):由程序员进行编码,在数据库进行更新时候手动更新缓存

2、主动更新策略:

在这里插入图片描述

3、主动更新第一个策略(CAP)

3.1、定义原理

由缓存的调用者在进行更新数据库的同时更新缓存。
在这里插入图片描述
更新数据:在进行数据库数据修改的时候,一般都是删除缓存,然后缓存为空,等待查询时候判空再进行数据库的查询然后更新缓存,而不是每次去做更新数据都进行更新缓存操作。

3.2、先操作缓存还是先数据库?

在这里插入图片描述

  • 先删缓存、后更新数据库(弊端较大):假设一个线程删除了缓存,然后进行更新数据库,此时另外一个线程进行数据的查询,因为数据库操作比缓存操作慢,此时因为缓存未命中重新写入缓存,但是数据库还没更新完毕,此时获取到的数据仍是旧数据。
  • 先更新数据库、后删除缓存:出现并发问题情况几乎没有,可能出现的问题就是刚好查询缓存时候,缓存失效,然后另外一个线程进行数据库更新,此时第一个线程已经将旧的数据重新写入缓存了。获取到的仍然是旧数据,但是发生的几率较低。
  • 双写一致性(延迟双删)
    • 流程
      更新数据库
      删除 Redis 缓存
      短暂延迟(如 500ms)后,再次删除缓存
    • 目的:避免并发情况下 旧数据回写 Redis 的问题。
  • 使用消息队列确保一致性:数据库更新后,发送消息消费消息,删除 Redis,确保 Redis 最终一致

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

产品详情页中 品牌官网详情 对应后端的字段是 detail

文章目录 1、在这个Vue代码中,品牌官网详情 对应后端的字段是 detail2、品牌官网详情 功能相关的代码片段3、export const productSave (data: any) >4、ProductController5、ProductDto 类6、ProductApiService 1、在这个Vue代码中,品牌官网详情 对…

使用C语言实现MySQL数据库的增删改查操作指南

使用C语言与MySQL数据库进行交互,通常涉及使用MySQL提供的C API库。这套API允许开发者在C/C++程序中执行SQL查询,从而实现数据库的增删改查操作。下面,我将详细介绍如何在C语言中实现这些基本操作。 准备工作 安装MySQL开发库:确保你的系统上安装了MySQL服务器以及MySQL开发…

【蓝桥杯嵌入式】2_LED

全部代码网盘自取 链接:https://pan.baidu.com/s/1PX2NCQxnADxYBQx5CsOgPA?pwd3ii2 提取码:3ii2 1、电路图 74HC573是八位锁存器,当控制端LE脚为高电平时,芯片“导通”,LE为低电平时芯片“截止”即将输出状态“锁存”…

计算机视觉常用数据集Cityscapes的介绍、下载、转为YOLO格式进行训练

我在寻找Cityscapes数据集的时候花了一番功夫,因为官网下载需要用公司或学校邮箱邮箱注册账号,等待审核通过后才能进行下载数据集。并且一开始我也并不了解Cityscapes的格式和内容是什么样的,现在我弄明白后写下这篇文章,用于记录…

MariaDB MaxScale实现mysql8主从同步读写分离

一、MaxScale基本介绍 MaxScale是maridb开发的一个mysql数据中间件,其配置简单,能够实现读写分离,并且可以根据主从状态实现写库的自动切换,对多个从服务器能实现负载均衡。 二、MaxScale实验环境 中间件192.168.121.51MaxScale…

Python设计模式 - 原型模式

定义 原型模式是一种创建型设计模式,它可以通过复制现有对象来创建新对象,而不是直接实例化新的对象。 结构 抽象原型(Prototype):声明 clone() 方法,以便派生类实现克隆自身的能力。具体原型&#xff08…

GWO优化决策树回归预测matlab

灰狼优化算法(Grey Wolf Optimizer,简称 GWO)是一种群智能优化算法,由澳大利亚格里菲斯大学的 Mirjalii 等人于 2014 年提出。该算法的设计灵感源自灰狼群体的捕食行为,核心思想是模仿灰狼社会的结构与行为模式。 在本…

Oracle的学习心得和知识总结(三十三)|Oracle数据库数据库的SQL ID的底层计算原理分析

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《Oracle Database SQL Language Reference》 2、参考书籍:《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

Git(分布式版本控制系统)系统学习笔记【并利用腾讯云的CODING和Windows上的Git工具来实操】

Git的概要介绍 1️⃣ Git 是什么? Git 是一个 分布式版本控制系统(DVCS),用于跟踪代码的变更、协作开发和管理项目历史。 由 Linus Torvalds(Linux 之父)在 2005 年开发,主要用于 代码管理。…

yum报错 Could not resolve host: mirrorlist.centos.org

检查dns 使用ping www.baidu.com ,如果ping不通,检查/etc/resolv.conf文件中是否有: nameserver 8.8.8.8 nameserver 8.8.4.4 替换yum源 1.备份原始的 YUM 源配置文件: sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.r…

postgreSQL16.6源码安装

1.获取源码 从PostgreSQL: File Browser获取tar.bz2或者tar.gz源码 2.解压 tar xf postgresql-version.tar.bz2 roothwz-VMware-Virtual-Platform:/usr/local# tar xf postgresql-16.6.tar.bz2 roothwz-VMware-Virtual-Platform:/usr/local# ll 总计 24324 drwxr-xr-x 12 ro…

Machine Learning:Introduction

文章目录 Machine LearningTrainingStep 1.Contract Function with Unknown ParametersStep 2.Define Loss from Training DataStep 3.Optimization Linear ModelPiecewise Linear CurveBeyond Piecewise Liner?FunctionLossOptimization Model Deformation Machine Learning …

【Java】多线程和高并发编程(三):锁(下)深入ReentrantReadWriteLock

文章目录 4、深入ReentrantReadWriteLock4.1 为什么要出现读写锁4.2 读写锁的实现原理4.3 写锁分析4.3.1 写锁加锁流程概述4.3.2 写锁加锁源码分析4.3.3 写锁释放锁流程概述&释放锁源码 4.4 读锁分析4.4.1 读锁加锁流程概述4.4.1.1 基础读锁流程4.4.1.2 读锁重入流程4.4.1.…

使用redis实现 令牌桶算法 漏桶算法

流量控制算法,用于限制请求的速率。 可以应对缓存雪崩 令牌桶算法 核心思想是: 有一个固定容量的桶,里面存放着令牌(token)。每过一定时间(如 1 秒),桶中会自动增加一定数量的令牌…

金媒婚恋交友系统V10.5的CRM操作提示:“您没有权限执行此操作”解决方法

大家都知道新年2.5日新版10.5已经升级了,这次升级相对以前更新内容相当重量级!最突出的就是CRM系统的更新和UI改观吐槽的内容都改进了我愿意和大家分享代码和新得~关注我昵称就能知道我哦!! 出现原因:是这个红娘账号没…

ubuntu使用最佳流程2:ubuntu20.04安装cuda(多版本切换),cudnn,显卡驱动

cuda安装(多版本cuda安装:可切换) 查看系统硬件配置 查询Linux系统的版本号 lsb_release -a查询显卡型号 待更新下载 CUDA官方传送门 找到适合自己的命令行下载安装即可 安装 accept 第一个driver去掉(点击enter&#xff…

Crowdin 在线本地化平台调用硅基流动AI预翻译

平台介绍 硅基流动(AI服务平台) 官网:https://siliconflow.cn/zh-cn/ 官方介绍 我主要使用:云服务平台 SilliconCloud 此平台已经将热门的开源大语言模型部署,花钱买额度,就能使用 API 最近有上线 Deep…

二、通义灵码插件保姆级教学-IDEA(使用篇)

一、IntelliJ IDEA 中使用指南 1.1、代码解释 选择需要解释的代码 —> 右键 —> 通义灵码 —> 解释代码 解释代码很详细,感觉很强大有木有,关键还会生成流程图,对程序员理解业务非常有帮忙,基本能做到哪里不懂点哪里。…

游戏引擎学习第97天

回顾昨天并计划今天 在这期节目中,主要讲解了光照的概念,并进一步讨论了法线贴图光照的实现。节目的内容大致分为几个部分: 光照的基础概述:讨论了光的工作原理以及如何在编程图形时需要考虑光照问题。尽管这些概念并没有深入到…

python+unity落地方案实现AI 换脸融合

先上效果再说技术结论,使用的是自行搭建的AI人脸融合库,可以离线不受限制无限次生成,有需要的可以后台私信python ai换脸融合。 TODO 未来的方向:3D人脸融合和AI数据训练 这个技术使用的是openvcinsighface,openvc…