数据库跟缓存的双写一致性
1 关于一致性为加速系统性能一般都会引入缓存机制比如 Redis。这种情况下当用户读数据时一般会按照如下流程读流程关于读的流程大家是没有异议的但是对于数据的更新呢如何操作才算合理呢先更新数据库再更新缓存。先删缓存再更新数据库。先更新数据库再删缓存。2 一致性解决方法2.1 缓存TTL简单直接又暴力的方法如果有些数据不重要我们读完一次数据到缓存后设置个TTL即可等待超时后缓存自动从数据库读取下数据。2.2 先更新数据库 再更新缓存假如我们有A、B两个请求A请求将age 14B请求将age 12。我们看下正常执行跟非正常执行情况缓存旧数据可发现如果出现网络震荡会导致缓存的数据是旧数据。因此这种方法不可取。并且如果是如下场景也不合适写场景多而读场景少的业务需求此时缓存不是经常性的读却被频繁的更新。如果缓存的数据是经过各种复杂计算后写入的那每次写入缓存都要运算一次此法不可取。2.3 先删缓存 再更新数据库假如A先请求更改数据B请求读数据如果因为网络导致发生如下情况也会造成缓存脏数据如果此时缓存没有设置TTL那会一直是脏数据。缓存脏数据上面这种情况如何解决呢一般可以采用延时双删策略他的核心执行流程如下public void write(String key,Object value){ redis.delKey(key); db.updateValue(value); Thread.sleep(1000); // 再次删除 redis.delKey(key); }该思路落实到流程图上如下所示延时双删策略sleep的时间要根据业务数据逻辑耗时而定反正目的是确保读请求结束写请求可以删除读请求造成的缓存脏数据。当然如果用的是主从写读架构那处理思路跟上面类似无非就是休眠时间再加上主从同步的时间即可。主从模式二次删除可是其实第二次删除还是有不妥的地方二次删除前面涉及到休眠可能导致系统性能降低可以采用异步的方式再起一个线程来进行异步删除。如果二次删除失败了还是会导致缓存脏数据存在的啊2.4 先更新数据库 再删缓存针对缓存更新问题老外提出了一个名为《Cache-Aside pattern》的缓存更新套路该策略在Facebook中也广泛使用该策略指出失效应用程序先从缓存取数据没有得到则从数据库中取数据成功后放到缓存中。命中应用程序从缓存中取数据取到后返回。更新先把数据存到数据库中成功后再让缓存失效。假如此时A、B两个线程同时请求正常来讲不管你是读写分离还是单机版读一般比写快。那删除缓存一般是有效的。先更新数据库再删除缓存但是也有可能别的原因导致读比写还慢导致我们删了个寂寞虽然这种情况很少发生。读比写还慢时该方案相比先删除缓存再更新数据库还是稳妥些的但是也不是万无一失的。不管是先删缓存再更新数据库还是先更新数据库再删缓存如果删除缓存失败了都会导致缓存跟数据不一致问题2.5 消息队列 确保消息删除通过消息队列的确认消费机制来删除缓存。消息队列机制确保删除缺点也很明显对业务线代码造成大量的侵入引入了中间件。消息的延迟删除也会造成短暂的不一致。2.6 专门程序消息队列 确保消息删除该方案启动一个订阅程序去订阅数据库的binlog获得需要操作的数据。在应用程序中另起一段程序获得这个订阅程序传来的信息进行删除缓存操作。专门程序删除缓存订阅binlog程序在mysql中有现成的中间件叫canal可以完成订阅binlog日志的功能。3 总结分析后你会发现数据更新时缓存是删除不是更新而删除缓存一般有三种方法如果缓存数据不敏感直接给缓存设置TTL即可。先删缓存再更新数据库此时需配合延时双删技术但可能导致二次删除失败。先更新数据库再删缓存此时需配合binlog消费 消息队列来实现。

相关新闻

48 张图 | 手摸手教你微服务的性能监控、压测和调优

48 张图 | 手摸手教你微服务的性能监控、压测和调优

一、何为压力测试 1.1、 大白话解释 性能压测是什么:就是考察当前软件和硬件环境下,系统所能承受的最大负荷,并帮助找出系统的瓶颈所在。 性能压测的目的:为了系统在线上的处理能力和稳定性维持在一个标准范围内,做到…

2026/7/4 19:35:41 阅读更多 →
Redis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis | 附实践清单

Redis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis | 附实践清单

这篇文章我想和你聊一聊 Redis 的最佳实践。 你的项目或许已经使用 Redis 很长时间了,但在使用过程中,你可能还会或多或少地遇到以下问题: 我的 Redis 内存为什么增长这么快? 为什么我的 Redis 操作延迟变大了? 如何…

2026/7/6 15:31:00 阅读更多 →
前端萌新别慌:30分钟搞懂CSS border所有属性(附超全示例代码)

前端萌新别慌:30分钟搞懂CSS border所有属性(附超全示例代码)

前端萌新别慌:30分钟搞懂CSS border所有属性(附超全示例代码) 前端萌新别慌:30分钟搞懂CSS border所有属性(附超全示例代码)先给border做个“人口普查”最原始的三件套:width-style-color方向四…

2026/7/3 19:08:17 阅读更多 →

最新新闻

YOLOv10模型改进-特定领域应用-第92篇:YOLOv10改进策略【特定领域应用】| YOLOv10在安防监控中的应用

YOLOv10模型改进-特定领域应用-第92篇:YOLOv10改进策略【特定领域应用】| YOLOv10在安防监控中的应用

一、本文介绍 本文记录的是YOLOv10在安防监控领域的应用。安防监控需要实时检测人员、车辆、异常行为等目标,YOLOv10凭借其高效的推理速度和准确的检测能力,成为安防监控领域的首选目标检测算法。 二、安防监控场景分析 2.1 检测目标 安防监控场景需要检测的目标包括: 人…

2026/7/7 7:26:00 阅读更多 →
Aimmy完整指南:如何用AI智能瞄准提升你的游戏体验

Aimmy完整指南:如何用AI智能瞄准提升你的游戏体验

Aimmy完整指南:如何用AI智能瞄准提升你的游戏体验 【免费下载链接】Aimmy Universal Second Eye for Gamers with Impairments (Universal AI Aim Aligner (AI Aimbot) - ONNX/YOLOv8 - C#) 项目地址: https://gitcode.com/gh_mirrors/ai/Aimmy 你是否曾在激…

2026/7/7 7:26:00 阅读更多 →
企业申报省级企业技术中心有哪些条件?企业技术中心申报要求详解

企业申报省级企业技术中心有哪些条件?企业技术中心申报要求详解

江苏省省级企业技术中心申报条件主要分为基本准入条件(一票否决项)、核心量化指标、评分与行业系数要求以及合规与前置条件四个维度。具体申报要求如下:一、基本准入条件1.主体资格:企业在江苏省境内注册,具有独立法人…

2026/7/7 7:26:00 阅读更多 →
ASM330LHH与STM32L041C6运动跟踪系统设计与优化

ASM330LHH与STM32L041C6运动跟踪系统设计与优化

1. ASM330LHH与STM32L041C6的硬件组合解析1.1 ASM330LHH的6DoF IMU特性详解ASM330LHH这颗汽车级6轴惯性模块堪称运动跟踪领域的精密仪器。它采用系统级封装(SiP)技术,在3.3mm2.6mm0.83mm的微型封装内集成了三轴数字加速度计和三轴数字陀螺仪。实测中我发现&#xff…

2026/7/7 7:24:00 阅读更多 →
IDM注册表锁定激活技术深度解析:永久试用期管理方案

IDM注册表锁定激活技术深度解析:永久试用期管理方案

IDM注册表锁定激活技术深度解析:永久试用期管理方案 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script Internet Download Manager(IDM&…

2026/7/7 7:21:59 阅读更多 →
AlmaLinux 9、Rocky Linux 9 升级到 10 版本

AlmaLinux 9、Rocky Linux 9 升级到 10 版本

注:本文原在2025年6月24日发表于笔者的个人博客《IT人的工作生活》,原文 链接 :https://www.cntse.com/3293.html,如需转载,请私信笔者,征得笔者同意后,方可转载,并且需要保留本段文…

2026/7/7 7:19:58 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻