【redis】延迟双删策略

目录

          • [1. 说明](#1. 说明)
          • [2. 举个例子](#2. 举个例子)
          • [3. 优点](#3. 优点)
          • [4. 缺点](#4. 缺点)
          • [5. 应用场景](#5. 应用场景)
          • [6. 注意事项](#6. 注意事项)
1. 说明
  • 1.Redis与数据库延迟双删策略是一种在分布式系统中维护数据一致性的常用方法,特别是在处理缓存和数据库之间的数据同步时。
  • 2.延迟双删策略的核心思想是在更新数据库时,不仅删除一次缓存,还在短时间后再进行一次延迟删除,以避免并发问题导致的数据不一致。
  • 3.第一次删除缓存:在更新数据库之前,先删除对应的缓存,确保缓存中不会存在即将被更新的旧数据。
  • 4.更新数据库:执行数据库更新操作,将新的数据写入数据库。
  • 5.延迟一段时间后,再次删除缓存:为了防止在数据库更新后立即有并发请求读到了旧缓存数据,延迟一定时间(比如1秒)后,再次删除缓存。这样做的目的是确保在延迟期间,所有可能读取到旧缓存的请求都已经结束,从而避免脏数据被重新写入缓存。
2. 举个例子
  • 1.请求A删除缓存,还未更新数据库。
  • 2.此时请求B查数据,缓存中没有,从库中获取到旧数据,并同步了缓存。
  • 3.请求A更新好了数据库,写入了新数据,延迟1秒钟,再删除缓存,可将更新数据库与删除缓存这段时间内的缓存旧数据删掉。
  • 4.后面的请求C获取不到缓存,重新查库中数据,构建新缓存。
3. 优点
  • 1.提高数据一致性:通过延迟删除可以减少缓存中的陈旧数据,避免因并发请求导致的缓存数据与数据库数据不一致的问题。
  • 2.减少缓存更新压力:相比于每次数据库更新都立即更新缓存,延迟双删避免了频繁的缓存更新请求,降低了缓存服务器的压力。
  • 3.简单易实现:不需要对现有的缓存系统做太大的修改,只需在更新逻辑中加入两次删除操作,成本较低。
4. 缺点
  • 1.延迟时间的难以确定:延迟多久再删除缓存是一个难点。如果延迟时间太短,可能仍然会出现并发问题;如果延迟时间太长,则可能增加缓存中的陈旧数据存在的时间,影响数据一致性。
  • 2.并发高时可能出现不一致:在极高并发的场景下,即使使用延迟双删策略,仍可能出现多个线程同时操作缓存和数据库的情况,导致数据不一致。
  • 3.多次缓存删除带来额外开销:延迟删除缓存意味着每次数据库更新后都要进行两次缓存删除操作,这可能会带来额外的性能开销。
5. 应用场景
  • 1.延迟双删策略适合于那些需要在高并发环境下保证缓存与数据库一致性的场景,特别是在更新操作频繁的系统中,如电商、社交平台等需要对大量缓存数据进行频繁更新的应用场景。
6. 注意事项
  • 1.合理设计延迟时间:延迟时间的设定是策略的核心,需要根据业务场景和流量模式进行合理设计。
  • 2.考虑其他优化策略:对于高并发场景或对一致性要求特别严格的系统,可能需要引入其他优化策略,如分布式锁、消息队列等。
  • 3.监控与报警:建立监控机制,及时发现并处理数据不一致的情况。
相关推荐
笑远4 小时前
MySQL 主主复制与 Redis 环境安装部署
redis·mysql·adb
小斌的Debug日记6 小时前
框架基本知识总结 Day16
redis·spring
morris1318 小时前
【redis】布隆过滤器的Java实现
java·redis·布隆过滤器
椰椰椰耶8 小时前
【redis】全局命令set、get、keys
数据库·redis·缓存
月落星还在8 小时前
Redis 内存淘汰策略深度解析
数据库·redis·缓存
五行星辰8 小时前
Java链接redis
java·开发语言·redis
左灯右行的爱情8 小时前
Redis- 切片集群
数据库·redis·缓存
周小闯8 小时前
Easyliev在线视频分享平台项目总结——SpringBoot、Mybatis、Redis、ElasticSearch、FFmpeg
spring boot·redis·mybatis
羽轩GM10 小时前
【JAVA架构师成长之路】【Redis】第18集:Redis实现分布式高并发加减计数器
redis·java教程
左灯右行的爱情14 小时前
Redis-主从架构
数据库·redis·架构