当前位置: 首页 > news >正文

redis做缓存,mysql的数据怎么与redis进行同步(双写一致性)

 基于业务做选择,强一致性和允许延迟再加消息队列

 强一致性:当修改了数据库的数据同时更新缓存的数据,缓存和数据库的数据保持一致

   读操作:缓存命中,直接返回数据,缓存没有命中,查询数据库,写入缓存,设定过期时间

   写操作:延迟双删 :先删除缓存,修改数据库,等待延迟(数据库主从节点,读写分离,需要等待主节点数据传给从节点的数据库,从节点负责被其他线程读取,只有从节点的数据正确的时候再被读取才能够保证新的缓存是正确的),再删除缓存,等其他线程读取从节点数据写新的缓存数据到缓存中,但是延迟时间不好掌握,时间短了依然会有脏数据,时间长了性能太差

   解决办法:

  分布式锁:

            线程1:先加锁,写入数据,删除缓存,释放锁

           线程2:等待锁,加锁,读缓存未命中,读取数据库,更新缓存,解锁

读写锁:redission提供的读写锁

 共享锁:读锁readlock,加锁之后,其他线程可以共享读操作

 排他锁:独占锁writeLock,加锁之后,阻塞其他线程的读写操作

当线程是读操作时加共享锁,其他线程依然可以读取数据

当线程是写操作时加排他锁,其他线程被阻塞,这样可以极大提升分布式锁的性能

优点:强一致

缺点:性能低

允许延迟一致:采用异步通知

最终一致性:可以使用MQ的可靠性来保证数据的最终一致性,修改数据发送消息给MQ,监听消息来更新缓存.

相关文章:

redis做缓存,mysql的数据怎么与redis进行同步(双写一致性)

基于业务做选择,强一致性和允许延迟再加消息队列 强一致性:当修改了数据库的数据同时更新缓存的数据,缓存和数据库的数据保持一致 读操作:缓存命中,直接返回数据,缓存没有命中,查询数据库,写入缓存,设定过期时间 写操作:延迟双删 :先删除缓存,修改数据库,等待延迟(数据库主从节…...

WPF触发器

WPF触发器 触发器(Trigger)通常指的是一种事件驱动机制,用于响应特定的事件或条件。WPF触发器是WPF中一种强大的功能,允许开发者在样式和模板中定义条件逻辑,以响应属性值的变化。WPF提供了多种触发器来实现样式和模板…...

反序列化漏洞的运行原理及防御方法

反序列化漏洞是当前网络安全领域中的一种严重安全威胁,其运行原理和防御方法对于保障应用程序和系统安全至关重要。本文将深入探讨反序列化漏洞的运行原理,并提出有效的防御策略。 ### 反序列化漏洞的运行原理 序列化是指将对象的状态信息转换为可以存储…...

护眼大路灯哪个牌子好?口碑最好的护眼灯品牌​​

护眼大路灯哪个牌子好?作为一名专业的测评师,我发现有大量的家长都反应自己家孩子在学习时经常出现,揉眼睛、频繁眨眼、眼睛痒等问题,而这些问题多半是与不良光线有光,这些现象使我更加关注护眼大路灯的选择&#xff0…...

Redis 初学者指南

Redis 初学者指南 1. 什么是 Redis?2. Redis 的基本概念3. 安装 Redis3.1 使用 Docker 安装3.2 从源码编译安装 4. 基本操作4.1 启动 Redis 服务4.2 连接 Redis 客户端4.3 常用命令 5. Redis 的数据结构5.1 字符串5.2 列表5.3 集合5.4 散列5.5 有序集合 6. 高级特性…...

node.js_npm : 无法加载文件 D:\Program Files\nodejs\npm.ps1

这个错误信息表明 PowerShell 因为执行策略的限制而阻止了 npm.ps1 脚本的运行。PowerShell 的执行策略是一种安全功能,用于限制哪些脚本可以运行,以防止恶意脚本的执行。 要解决这个问题,你可以按照以下步骤操作: 查看当前的执行…...

技术星河中的璀璨灯塔 —— 青云交的非凡成长之路

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

使用 Git 命令将本地项目上传到 GitLab

步骤详解 1. 在 GitLab 上创建一个新项目 登录你的 GitLab 账号。点击“New project”创建一个新的空项目。为项目设置名称、描述等信息。 2. 关联远程 Git 仓库 1.初始化本地 Git 仓库 git init 2.关联远程仓库: git remote add origin https://gitlab-lizz…...

JavaScript的第十三天

目录 一、使用jQuery操作属性值 操作案例: 表格的全选和反选 二、设置宽高 1、宽高属性 2、使用方式 三、offset() 和position()的区别 1、.offset():获取到document的距离,也就是窗口边…...

el-table 滚动条重置 手动控制滚动条

最近在使用 el-table 的时候,出现一个问题: 表头过长的时候,会有左右滑动的操作,当我们把表格拉到最右侧,这个时候重新请求数据的话,表格位置还是在最右侧,不会恢复原位。 那我们想恢复原位&a…...

详细分析Vue3中的provide和inject基本知识(附Demo)

目录 前言1. 基本知识2. Demo3. 拓展 前言 原先写过一篇父传子,推荐阅读:详细分析Vue3中的props用法(父传子) 实战中也常用这种方式,今天突然发现还有另外一种方式,对此进行深入探讨学习下 1. 基本知识 …...

spring集成kafka

Kafka 是一个分布式流处理平台,广泛用于构建实时数据流管道和流应用程序。它以高吞吐量、可扩展性和可靠性著称。以下是 Kafka 的实现原理详解及其在 Spring Boot 中的集成示例。 一、Kafka 实现原理 1. 架构概述 Kafka 的架构主要由以下几个组件组成&#xff1a…...

el-form表单中含有el-input按回车自动刷新如何阻止

场景: 在Vue.js中使用Element UI的el-input组件时,如果按下Enter键导致页面刷新,这通常是因为表单的默认提交行为被触发了。要避免这种情况,你可以在el-input所在的表单上监听键盘事件,并阻止默认行为。 先解释一下时间…...

Spring Boot2.x教程:(十)从Field injection is not recommended谈谈依赖注入

从Field injection is not recommended谈谈依赖注入 1、问题引入2、依赖注入的三种方式2.1、字段注入(Field Injection)2.2、构造器注入(Constructor Injection)2.3、setter注入(Setter Injection) 3、为什…...

在 Android Studio 上运行 Java 的 main 函数

直接写了个main函数运行的时候提示 这时我们需要在idea目录下找到gradle.xml文件 添加 <option name"delegatedBuild" value"false" />搞定...

【Nas】X-DOC:Mac mini 安装 ZeroTier 并替换 planet 实现内网穿透

【Nas】X-DOC&#xff1a;Mac mini 安装 ZeroTier 并替换 planet 实现内网穿透 1、下载客户端 ZeroTier One2、安装过程3、更换planet备份原planet4、重启服务5、加入网络6、NAT内网穿透 1、下载客户端 ZeroTier One https://www.zerotier.com/download/ 选择 MacOS 适用版本&…...

Spring Boot 集成 RabbitMQ

在现代分布式系统中&#xff0c;消息队列扮演着至关重要的角色。它能够实现系统间的异步通信、解耦组件以及提高系统的可扩展性和可靠性。RabbitMQ 作为一款广泛使用的开源消息中间件&#xff0c;具有强大的功能和灵活的配置。而 Spring Boot 则是一种流行的 Java 开发框架&…...

存在sql注入的公网站点

此数据为博主在新手阶段练习sql注入时发现的站点&#xff0c;漏洞可能修复&#xff0c;备注可能错误 url: https://www.uni-1.com.hk/about_en.php?id2 注入点类型&#xff1a;数值 sql报错回显&#xff1a;无 sql语句执行&#xff1a;[order by] [union] 字段数&#xff1a;1…...

linux之网络子系统- 内核发送数据包流程以及相关实际问题

一、相关实际问题 查看内核发送数据消耗的CPU时应该看sy还是si在服务器上查看/proc/softirqs&#xff0c;为什么NET_RX要比NET_TX大得多发送网络数据的时候都涉及那些内存拷贝操作零拷贝到底是怎么回事为什么Kafka的网络性能很突出 二、网络包发送过程总览 调用系统调用send发…...

UDP 实现的 Echo Server 和 Echo Client 回显程序

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持! 在网络编程中&#xff0c;Echo Server 和 Echo Client 回显是一种经典的示例&#xff0c;用于演示基本的网络通信。Echo Server 接收来自客户端的数据&#xff0c;并将相同的数据发送回客户端。这种模式在测试…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...