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

【延迟双删】简单解析

使用场景:【高并发】情况下的做【更新操作】
什么是延迟双删
首次删除:当需要更新某个数据项时,首先删除缓存中的该项。
更新数据库:接着,更新数据库中的该项。
短暂延迟:然后等待一段很短的时间(例如50毫秒),这段时间允许任何正在进行的读操作完成。
二次删除:最后,再次删除缓存中的该项。这样做的目的是防止在这段延迟期间有任何读操作将旧数据重新写入了缓存。2:为什么要进行再次删除(二次删除):1:为什么延迟:短暂的等待时间(延迟)是为了确保所有可能的读取请求都已完成,避免旧的数据被再次写入缓存。
2:为什么要进行再次删除(二次删除):在延迟期间,如果有其他请求读取了数据库中的旧值并将其重新写回到缓存中,那么即使你已经更新了数据库,缓存中仍然可能存在旧数据。第二次删除确保在延迟结束后,无论是否有其他请求重新填充了缓存,都会再次清理掉这些可能存在的旧数据,从而保证缓存和数据库的一致性。简单例子:// 1. 首次删除缓存jedis.del("user:" + userId + ":email");// 2. 更新数据库String sql = "UPDATE users SET email = ? WHERE id = ?";try (PreparedStatement stmt = mysqlConn.prepareStatement(sql)) {stmt.setString(1, newEmail);stmt.setInt(2, userId);stmt.executeUpdate();}// 3. 延迟一段时间(例如 50 毫秒)Thread.sleep(50);// 4. 二次删除缓存jedis.del("user:" + userId + ":email");
不做延迟双删会带来的问题:

相关文章:

  • Java 安全:如何防止 SQL 注入与 XSS 攻击?
  • 【Harmony】常用工具类封装
  • Kafka 面试,java实战贴
  • ARM Cortex-M (STM32)如何调试HardFault
  • 【美化vim】
  • kafka auto.offset.reset详解
  • QML ColorDialog:组件应用详解
  • 3.1 WPF使用MaterialDesign的介绍1
  • YOLO算法的革命性升级:深度解析Repulsion损失函数在目标检测中的创新应用
  • 三餐四季、灯火阑珊
  • Sentinel源码—8.限流算法和设计模式总结二
  • nodejs模块暴露数据的方式,和引入(导入方式)方式
  • 使用Python+OpenCV将多级嵌套文件夹下的视频文件抽帧
  • mybatis-plus开发orm
  • [Git] Git Stash 命令详解
  • Linux-skywalking部署步骤并且添加探针
  • 【设计模式】深入解析代理模式(委托模式):代理模式思想、静态模式和动态模式定义与区别、静态代理模式代码实现
  • 云原生 - Service Mesh
  • 基于SpringBoot的高校学习讲座预约系统-项目分享
  • 滑动窗口学习
  • 贵州省交通运输厅原副厅长冯伟已任遵义市领导
  • 三博脑科跌超10%:董事长遭留置立案,称控制权未变化,经营秩序正常
  • 湘江半程马拉松赛女配速员“跑崩”,晕倒在终点?组委会回应
  • 日方炒作中国社会治安形势不佳,外交部:政治操弄意图明显
  • “75后”遂宁市长刘会英调任四川省人社厅党组副书记
  • 国家疾控局局长沈洪兵:将逐步缩小国内免疫规划与国际差距