MySQL和Redis更新一致性问题
1. 先更新数据库,再更新缓存
适用场景:适用于对数据一致性要求不是特别高,且缓存更新失败对
系统影响较小的场景。例如,某些非关键数据的缓存更新。
风险:如果缓存更新失败,会导致数据库和缓存数据不一致。
// 更新数据库
updateMySQL(data);
// 更新缓存
updateRedis(data);
2. 先删除缓存,再更新数据库
这种方法可以减少数据不一致的时间窗口,但仍然存在问题。如果删除缓存后,更新数据库失败,会导致缓存中没有数据,而数据库中的数据是旧的。
适用场景:适用于对数据一致性有一定要求,且数据库更新失败对系
统影响较小的场景。例如,某些读多写少的缓存数据。
风险:如果数据库更新失败,会导致缓存中没有数据,而数据库中的
数据是旧的。
// 删除缓存
deleteRedis(key);
// 更新数据库
updateMySQL(data);
3. 先更新数据库,再删除缓存
这种方法可以减少数据不一致的时间窗口,但仍然存在问题。如果更新数据库后,删除缓存失败,会导致缓存中的数据是旧的。
适用场景:适用于对数据一致性有一定要求,且缓存删除失败对系统
影响较小的场景。例如,某些读多写少的缓存数据。
风险:如果缓存删除失败,会导致缓存中的数据是旧的。
// 更新数据库
updateMySQL(data);
// 删除缓存
deleteRedis(key);
4. 使用事务或分布式锁
通过使用事务或分布式锁,可以确保数据库和缓存的更新操作是原子的。
使用事务
在某些情况下,可以使用数据库事务来确保数据库和缓存的更新操作是原子的。
适用场景:适用于对数据一致性要求非常高,且需要确保数据库和缓
存更新操作的原子性的场景。例如,金融交易、订单处理等关键业务。
风险:使用事务或分布式锁会增加系统的复杂性和开销,可能会影响
系统的性能。
try {// 开始事务startTransaction();// 更新数据库updateMySQL(data);// 删除缓存deleteRedis(key);// 提交事务commitTransaction();
} catch (Exception e) {// 回滚事务rollbackTransaction();
}
使用分布式锁
通过使用分布式锁,可以确保在同一时间只有一个线程可以更新数据库和缓存。
// 获取分布式锁
if (acquireLock(lockKey)) {try {// 更新数据库updateMySQL(data);// 删除缓存deleteRedis(key);} finally {// 释放分布式锁releaseLock(lockKey);}
}
5. 使用消息队列
通过使用消息队列,可以将更新操作解耦,并确保更新操作的顺序性。
适用场景:适用于对数据一致性有一定要求,且需要解耦更新操作的
场景。例如,异步处理、批量更新等。
风险:消息队列可能会引入额外的延迟,且消息处理失败会导致数据
不一致。
// 发送更新消息到消息队列
sendMessageToQueue(updateMessage);// 消费者处理消息
consumeMessageFromQueue(updateMessage) {// 更新数据库updateMySQL(data);// 删除缓存deleteRedis(key);
}
6. 使用缓存过期时间
通过设置缓存的过期时间,可以减少数据不一致的时间窗口。
适用场景:适用于对数据一致性要求不是特别高,且可以容忍一定时
间内数据不一致的场景。例如,某些非关键数据的缓存。
风险:缓存过期时间内,数据可能不一致。
// 更新数据库
updateMySQL(data);
// 删除缓存
deleteRedis(key);
// 设置缓存过期时间
setRedisExpiration(key, expirationTime);相关文章:
MySQL和Redis更新一致性问题
1. 先更新数据库,再更新缓存 适用场景:适用于对数据一致性要求不是特别高,且缓存更新失败对 系统影响较小的场景。例如,某些非关键数据的缓存更新。 风险:如果缓存更新失败,会导致数据库和缓存数据不一致。…...
(19)夹钳(用于送货)
文章目录 前言 1 常见的抓手参数 2 参数说明 前言 Copter 支持许多不同的抓取器,这对送货应用和落瓶很有用。 按照下面的链接(或侧边栏),根据你的设置了解配置信息。 Electro Permanent Magnet v3 (EPMv3)Electro Permanent M…...
安装lap和cython_bbox失败了很多次!!!终于被我发现了!
先说 lap 试了很多种方式,pip install lap / conda install -c conda-forge lap … 全失败了后面发现 lap 不支持 python > 3.9 的版本使用 pip install lapx 成功! cython_bbox 更难了 一直提示缺少MicroSoft C 14.0 … 大家有需要自行下载&#x…...
异业联盟整合各大行业门店,共享资源
异业联盟系统是一种将不同行业的企业或商家整合在一起,通过资源共享、优势互补、合作推广等方式,实现共同发展和互利共赢的商业合作模式的数字化管理和运营系统。 其具有以下显著优势: 1.拓展客户群体:不同行业的企业联合起来&am…...
前端如何去看蓝湖
首先加入团队,在内容中我们可以看到点击图片,右边出现的图 包含了像素甚至有代码,我们可以参考这个代码。 那么在使用之前我们需要调整好像素,例如我们的像素宽为375,不用去管高,然后这个宽度我们可以去自…...
HTML+CSS+JS 实现3D风吹草动效果(B站视频)
效果: 代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>3D effect&…...
常用网络概念
📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 ☁️运维工程师的职责:监…...
图鸟UI框架在uni-app多端应用开发中的实践与应用
摘要: 随着移动互联网的蓬勃发展,跨平台应用开发已成为行业趋势。本文将探讨图鸟UI框架如何在uni-app开发环境下助力开发者高效构建多端应用,并通过具体案例展示其在实际项目中的应用效果。 一、引言 在移动应用开发领域,跨平台…...
特征值究竟体现了矩阵的什么特征?
特征值究竟体现了矩阵的什么特征? 简单来说就是x经过矩阵A映射后和自己平行 希尔伯特第一次提出eigenvalue,这里的eigen就是自己的。所以eigenvalue也称作本征值 特征值和特征向量刻画了矩阵变换空间的特征 对平面上的任意向量可以如法炮制,把他在特征…...
C语言-顺序表
🎯引言 欢迎来到HanLop博客的C语言数据结构初阶系列。在这个系列中,我们将深入探讨各种基本的数据结构和算法,帮助您打下坚实的编程基础。本次我将为你讲解。顺序表(也称为数组)是一种线性表,因其简单易用…...
OpenCV漫水填充函数floodFill函数的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 功能描述 ffloodFill函数是OpenCV库中用于图像处理的一个功能,它用于填充与种子点颜色相近的连通区域。这个函数在很多场景下都非常有用&#x…...
redis内存分析
阿里云redis集群对key进行hash后保存在对应的后端节点,使每个节点的key数量大致相同,但是如果存在大key,就会导致单个节点内存用满,可以使用redis-rdb-tools 或rdr来对内存进行分析。 redis-rdb-tools redis-rdb-tools通过对dum…...
redis批量删除keys,用lua脚本。
文章目录 现象解决方法 现象 系统报错: misconf redis is configured to save ....后查看机器内存。 是内存满了,需要删除其中的key 解决方法 (1) 编写一个脚本,放在redis-cli.exe同一个目录 (2) 脚本内容如下: -- 使用Lua脚…...
Python-找客户软件
软件功能 请求代码: 填充表格: 可以search全国各个区县的所有企业信息,过滤手机号、查看是否续存/在业状态。方便找客户。 支持定-制-其他引-留-阮*件(XHSS,DYY,KS,Bi-li*Bi-li) V*…...
STM32 - PWR 笔记
PWR(Power Control)电源控制 PWR 负责管理 STM32 内部的电源供电部分,可以实现 可编程电压监测器 和 低功耗模式 的功能 可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD…...
标准盒模型和怪异盒子模型的区别
在 CSS 中,标准盒模型和怪异盒模型是两种不同的盒子模型计算方式,主要区别如下: 一、标准盒模型(content-box) 1. 定义与组成 - 标准盒模型是 CSS 中默认的盒模型。 - 它由内容区域(content)、…...
推荐算法——MRR
定义: MRR计算的是第一个正确答案的排名的倒数,并对所有查询取平均值。它衡量了模型在排序结果中快速找到正确答案的能力。 其中: Q 是查询的总数。ranki 是第 i 个查询中第一个正确答案的排名(位置)。如果第一个正…...
idea中打开静态网页端口是63342而不是8080
问题: 安装了tomcat 并且也配置了环境,但是在tomcat下运行,总是在63342下面显示。这也就意味着,并没有运行到tomcat环境下。 找了好几个教程(中间还去学习了maven,因为跟的教程里面,没有maven,但…...
Vue3框架搭建3:配置说明-prettier配置
1、配置说明: .prettierrc.json{"$schema": "https://json.schemastore.org/prettierrc","semi": false,"tabWidth": 2,"singleQuote": true,"printWidth": 100,"trailingComma": "no…...
SQL MySQL定时器/事件调度器(Event Scheduler)
事件调度器(Event Scheduler)在MySQL数据库系统中是一个强大的功能组件,它允许用户定义一系列称为“事件”的数据库对象,这些事件在指定的时间或时间间隔自动执行预定义的SQL语句或操作。事件调度器通过维护一个时间计划表来管理这…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
相关类相关的可视化图像总结
目录 一、散点图 二、气泡图 三、相关图 四、热力图 五、二维密度图 六、多模态二维密度图 七、雷达图 八、桑基图 九、总结 一、散点图 特点 通过点的位置展示两个连续变量之间的关系,可直观判断线性相关、非线性相关或无相关关系,点的分布密…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...
