一、实际问题在实际开发中我们通常会用 Redis 作为缓存来加速数据读取。但当数据需要更新时就面临一个经典问题应该先删除缓存还是先更新数据库遗憾的是无论选择哪种顺序在并发场景下都可能产生脏数据。以先删缓存再更新数据库为例考虑以下时序线程 A 删除缓存线程 B 读取缓存未命中从数据库读到旧值写入缓存线程 A 更新数据库为新值此时数据库中是新值而缓存中却是线程 B 写入的旧值数据不一致就此产生。反过来先更新数据库再删缓存同样存在类似的竞态窗口。由于线程调度的不确定性这类问题在高并发下并非小概率事件。要解决它常见的思路有两种延迟双删和读写锁各有适用场景。二、延迟双删1. 删除 Redis 缓存 ← 第一次删 2. 更新数据库 3. 发送一条延时消息到 MQ或者Canal监听binlog日志 4. MQ 消费者收到消息后再次删除缓存 ← 第二次删延迟双删的核心思想很简单既然一次删除缓存无法保证一致性那就删两次中间给数据库更新留出时间窗口。基本流程删除 Redis 缓存 ←第一次删除更新数据库发送一条延迟消息到 MQ或通过 Canal 监听 binlogMQ 消费者收到消息后再次删除缓存 ←第二次删除第一次删除是为了让后续读请求能走到数据库更新数据库后再补一次删除把可能在第一步和第二步之间被脏数据回填的缓存清理掉。两种实现方式MQ 延迟消息业务代码中更新数据库后向消息队列发送一条延迟消息消费者到期后执行缓存删除。常用 RocketMQ 的延迟消息或 RabbitMQ 的 TTL 死信队列来实现。Canal 监听 binlogCanal 伪装为 MySQL 的从节点通过读取 binlog 日志感知数据变更自动触发缓存删除。这种方式的优势在于不需要修改业务代码对应用层完全透明。两个需要注意的点第一第二步发送的应该是延迟消息而非立即删除。这是为了给数据库主从复制留出同步时间——如果主库刚写完、从库还没同步此时删缓存后读请求打到从库读到的可能还是旧值缓存又会被旧数据回填。第二延迟双删并不能做到强一致两次删除之间仍然存在一个短暂的不一致窗口。如果业务对一致性要求不高比如缓存热点商品数据、文章浏览量等这种方案完全够用且实现成本低、性能影响小。三、读写锁如果对数据一致性有严格要求延迟双删的短暂不一致窗口是不可接受的这时可以考虑读写锁方案。Redis 提供了两种锁的语义读锁共享锁多个线程可以同时持有读锁进行读操作但读锁存在时写操作必须等待。写锁排他锁一个线程持有写锁后其他线程的读操作和写操作全部阻塞。使用方式读数据时加读锁从缓存读取缓存未命中则加写锁从数据库加载并回填缓存。写数据时加写锁先更新数据库再删除或更新缓存。读写锁能够完全保证数据一致性因为同一时刻要么只有读操作在并发执行要么只有一个写操作在执行从根本上消除了竞态条件。代价是性能——写操作会阻塞所有读写请求在读多写少的场景下影响尤为明显。因此读写锁适合对一致性要求极高的业务比如优惠券计算、订单交易、库存扣减等场景。四、方案对比延迟双删读写锁一致性最终一致存在短暂窗口强一致性能影响小异步删除写操作阻塞读写性能下降明显实现复杂度中等需引入 MQ 或 Canal较低Redis 原生支持适用场景热点数据、一致性要求不高的读多场景交易、库存等强一致性场景实际选型时不需要非此即彼。同一个系统中对不同业务模块可以根据一致性要求分别采用不同策略——大部分读场景用延迟双删关键写场景用读写锁这样能在一致性和性能之间取得较好的平衡。
Mysql部署流程 前期准备:环境与目录布置系统环境要求部署前确认Docker Engine ≥20.10.14,Docker Compose ≥2.17.0。执行docker --version和docker-compose --version验证版本。确保宿主机3306端口未被占用:netstat -tlnp | grep 3306。磁盘空间建议预留20…
Codex配置体系:分层隔离与worktree工程实践 1. 项目概述:Codex 不是“另一个 IDE 插件”,而是一套可编程的代码理解与生成基础设施 Codex 这个名字在开发者社区里已经不陌生,但很多人至今仍把它简单等同于“带 AI 的 VS Code 插件”——这是最大的认知偏差。Codex 的本质,是…
Elasticsearch:V7.17.15部署 环境准备与前提条件 系统要求与软件安装 Elasticsearch 7.17.15对Linux发行版有广泛兼容性,CentOS 7/8、Ubuntu 18.04/20.04、Debian 10/11均可稳定运行。生产环境建议选择长期支持版本,避免使用即将结束生命周期的发行版。系统内核版本需不低于3.10&a…
杭州爱彼回收价格查询及各大回收平台实测排行(2026年7月最新数据) - 爱彼中国官方服务中心 2026年7月杭州爱彼手表回收价格整体稳定,依据成色、附件(保卡、盒子、发票)、表况及市场供需,主流热门款如皇家橡树系列15500ST回收价在18万元至22万元人民币区间,复杂功能款如离岸型26405CE回收价可至25万元至30…
美度手表售后官网维修中心专业保养服务权威公示(2026年7月最新) - 亨得利钟表维修中心 美度官方售后服务中心的全国统一客户服务热线已于2026年7月正式启用400-801-7361,客服在线时间为每日8:00至22:00,该号码为美度手表在中国大陆地区提供售后咨询、维修保养预约及进度查询的直营渠道。所有保养服务均需…
2026年当前巩义地区小型生物质燃料颗粒机大型制造企业深度解析 - 品牌鉴赏官2026 在“双碳”目标持续深化与乡村振兴战略全面推进的宏观背景下,生物质能源作为清洁、可再生的绿色能源,其产业化发展迎来了历史性机遇。生物质燃料颗粒机作为将农林废弃物转化为标准化、高密度固体燃料的核心装备,其技…
2026年专业的55系列断桥铝窗热门厂家怎么选择 - 热点品牌推荐 2026年专业的55系列断桥铝窗热门厂家怎么选择 摘要:本文围绕55系列断桥铝窗的选购逻辑展开,梳理厂家筛选的核心判断维度,为本地家装封窗用户提供可落地的选型参考,规避低价劣质产品的使用隐患。 一、什么是55系列断…
2026年云南包装印刷批发服务商综合评估与口碑优选 - 品牌鉴赏官2026 引言:云南包装印刷行业的标准化需求与市场挑战 随着云南省特色农业、生物医药、绿色食品及文旅产业的蓬勃发展,企业对产品包装的需求日益多元化、品质化与品牌化。包装不仅是产品的外衣,更是品牌价值传递、产品保护…
亲身到店探访合肥亨得利官方名表服务中心|官方热线及24小时维修地址(2026年7月更新) - 亨得利官方 下午三点到的合肥万象城,本来以为修表这种事儿得跑老城区,结果跟着导航进了华润大厦B座,坐电梯上12楼,门一开就看见亨得利的前台了。合肥这边玩表的老哥应该都知道,政务区这块这几年越来越像样,写字楼里藏着不少…
2026年7月最新金华宇舶官方售后客户服务热线与维修网点地址汇总 - 亨得利官方服务中心 金华宇舶官方售后客户服务热线与维修网点地址信息是每一位宇舶腕表拥有者都极为关注的核心内容。作为瑞士高端制表品牌,宇舶以其精湛工艺与创新设计闻名,确保腕表始终处于理想运行状态,离不开官方售后渠道的合规支持…
HS2汉化补丁终极指南:一键解锁Honey Select 2完整中文体验 HS2汉化补丁终极指南:一键解锁Honey Select 2完整中文体验 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为Honey Select 2的日文界面而苦恼吗…
怎么寄快递才能便宜呢?2026年7月寄快递省钱攻略 - 生活情报姬 同一箱老家特产,同事花22寄的,我花9块。不是我路子野,是我按场景选了渠道。寄快递便宜不便宜,一半看你会不会"对号入座"——退换货、卖闲置、寄礼物,招数都不一样。 分场景才最省 丰火递想不管啥场景都…
3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略 3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾为Windows右键菜单中那些…
GXDE OS下Wayland兼容性实战:从deepin-mutter原理到VMware Tools修复 如果你正在用 GXDE OS 或者任何基于 Deepin 的发行版,并且遇到了“检测到窗口系统采用 Wayland 协议,程序即将退出”这类弹窗,或者发现 VMware Tools 在 Ubuntu 24.04 这类默认 Wayland 的系统上启动失败,那这篇文章就是为你准备的…
企业AI落地困境与AgenticOps实践指南 1. 企业AI落地的现实困境与破局之道过去两年,大模型技术呈现爆发式增长,从GPT-3到GPT-4,从LLaMA到DeepSeek,模型参数规模从百亿级跃升至万亿级,多模态能力从单一文本扩展到图文音视频的综合处理。然而在企业应用层面&a…
[C++]内存管理:串顺序存储的内存回收 在串(字符串)的顺序存储中,内存回收的方式取决于字符串的存储方式以及所使用的编程语言和相关库。以下以 C 为例进行说明,因为 C 对内存管理有较为直接的控制。 1. 基于 char 数组的串顺序存储 如果使用普通的 char 数组来存储字…
移动端游戏功耗测试实战:电流、功率、亮度和场景对比 移动端游戏功耗测试:先控制变量,再比较优化是否真的省电 摘要:功耗测试最容易犯的错误,是拿两次不同温度、不同亮度、不同场景的平均功率直接比较。本文给出一套可复现的游戏功耗测试方法,覆盖引擎特性验证、版本回归和黑盒体验测试,并说明如何把功耗与帧率、温控、CPU/G…
足球口袋教练 HarmonyOS 离线应用实战(03/20):ArkUI 首页仪表盘搭建 本文是“足球口袋教练 HarmonyOS 离线应用实战”系列第 3 篇。示例项目是一个 HarmonyOS / ArkTS / ArkUI 编写的离线足球训练助手,围绕真实页面、真实截图和可复现操作展开。 本篇要解决的问题 训练 App 的首页不能只展示欢迎语,它要解决“我现在该点哪…