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

为什么需要延迟双删,两次删除的原因是什么?

延迟双删的基本流程

  1. 首次删除缓存
  2. 更新数据库
  3. 二次删除缓存

示例代码实现:

@Service
public class ProductService {@Autowiredprivate StringRedisTemplate redisTemplate;private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();public void updateProduct(Product product) {deleteCache(product.getId()); // 第一次删除缓存updateProductInDB(product);   // 更新数据库scheduler.schedule(() -> deleteCache(product.getId()), 2, TimeUnit.SECONDS); // 延迟二次删除}
}

首次删除缓存的原因

  1. 若先更新数据库再删缓存,当缓存删除失败时会导致数据不一致
  2. 先删缓存后更新数据库的方案更优:
    • 若删除成功但更新失败,仅产生缓存缺失而非数据错误
    • 数据库操作比缓存操作更容易失败
    • 更新操作比删除操作更容易失败

对于低并发场景,单次删除通常已能满足需求。但在高并发时可能出现问题:首次删除缓存会放大读写并发导致的数据不一致风险

解决方案 - 延迟双删: 通过写线程在执行"删缓存→更新数据库"后,延迟1-2秒再次删除,可有效清除可能被读线程写入的脏数据。此方案虽可能导致有效缓存被清除,但仅增加一次cache miss,影响有限


既然有第二次删除,第一次删除是否必要?

完全必要。若取消首次删除,流程简化为:

  1. 更新数据库
  2. 删除缓存

此时若第二步失败将直接导致数据不一致。而延迟双删中:

  • 首次删除降低基础不一致风险
  • 二次删除专门处理并发场景下的不一致 即使二次删除可能失败,但整体方案显著降低了不一致概率。当然,在低并发场景中,根据实际情况简化方案也是可行的。
http://www.dtcms.com/a/467123.html

相关文章:

  • 深圳电商网络网站建设wordpress 备案号插件
  • 局网站建设管理制度财务软件免费
  • 怎么看网站是dede模板心理网站 模版
  • 如何制作响应式网站网站建设费应开具互联网信息服务吗
  • 企业级BPM低代码平台JMEEV深度解析
  • 网站建设关键词布局wordpress全部文件夹
  • 东城区网站排名seo如何进行网络营销服务创新
  • Arbess从入门到实战(10) - 使用Arbess+GitLab实现.Net 项目自动化部署
  • 重庆帝一网络网站建设专家南京房地产网站
  • 《K8s集群多节点部署》(Ubuntu22.04)
  • 做网站赚大钱php手机网站建设
  • 如何把网站主关键词做到百度首页中国重大新闻
  • 免费做app和网站的平台有哪些最贵网站建设多少钱
  • 36kr网站用什么做的wordpress开发人力资源
  • 亚马逊网站建设网站seo关键词排名优化
  • 软件下载网站如何履行北京外包公司都有哪些
  • 网站建设中出现的错误代码自己建立一个网页
  • 音乐网站开发 群云南百度推广开户
  • Linux_基本指令1
  • 优化网站设计请大学生做网站
  • 网站维护包括大学生网页设计报告
  • 计算机应用技术网站开发基础知识龙岗网站制作公司
  • 网站设计英文报告低价网站空间
  • 百度AI车牌识别配置指南
  • 网站建设开票的税收分类虚拟专用网络
  • 跟京东类似的网站营销最好的方法
  • 美食网站建设策划书范文公司在东莞建设网登记要多少钱
  • 天宁网站建设制作国际最新十大新闻事件
  • phpcms 移动网站模板代理服务器ip免费
  • 找网站建设都需要注意哪些wordpress浮动视频