Redis中的延迟双删

 更新时间:2024年04月22日 08:40:58   作者:_OLi_  
这篇文章主要介绍了Redis中的延迟双删问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

什么是延迟双删?

做法:先删除redis,再更新数据库,延迟N秒后再删除一次redis。

延迟双删策略是分布式系统中数据库存储和缓存数据保持最终一致性的常用策略,但它不是强一致。

其实不管哪种方案,都避免不了Redis存在脏数据的问题,只能减轻这个问题,要想彻底解决,得要用到同步锁和对应的业务逻辑层面解决。

在更新数据库数据时,需要同步redis中缓存的数据,存在两种方法:

第一种方案

先更新数据库,再删除redis。

存在的问题:当请求1执行完更新数据库操作后,还未来得及删除redis,此时请求2查询到并使用了redis中的旧数据。

第二种方案

先删除redis,再更新数据库。

存在的问题:当请求1执行完删除redis后,还未进行更新数据库操作,此时请求2查询到了数据库的旧数据并写入了redis。

所以需要先删除redis,再更新数据库,延迟N秒后再删除一次redis。

延时双删可能会导致的问题?

在低并发的情况下,可以通过加锁的方式来达成双写一致性。

但是高并发的情况下,删除缓存必然会造成缓存击穿的问题,其实缓存击穿影响不大,因为能解决, 主要是延迟双删的第一次删除可能没什么意义

因为在缓存第一次删除旧数据后,数据库还没有完成更新时,请求到来时直接请求数据库,返回的还是旧数据并添加到了缓存中,相当于又回到了缓存第一次删除之前的状态,都是缓存的旧数据。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • caffeine_redis自定义二级缓存

    caffeine_redis自定义二级缓存

    这篇文章详细介绍了caffeine_redis 自定义二级缓存,文中有相关的背景前提与出现的问题,感兴趣的同学可以参考一下
    2023-04-04
  • 命令行清除Redis缓存的实现

    命令行清除Redis缓存的实现

    本文主要介绍了命令行清除Redis缓存的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 深入了解Redis的看门狗机制

    深入了解Redis的看门狗机制

    Redis锁的延期机制,通常被称为看门狗机制,本文就拉介绍一下Redis的看门狗机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • Redis过期键删除策略解读

    Redis过期键删除策略解读

    Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,保证数据库干净但可能影响性能,Redis默认同时使用两种策略
    2025-01-01
  • 关于在Redis中使用Pipelining加速查询的问题

    关于在Redis中使用Pipelining加速查询的问题

    这篇文章主要介绍了在Redis中使用Pipelining加速查询,Redis是一个client-server模式的TCP服务,也被称为Request/Response协议的实现,本文通过一个例子给大家详细介绍,感兴趣的朋友一起看看吧
    2022-05-05
  • Redis过期事件监听器的完整实现步骤

    Redis过期事件监听器的完整实现步骤

    要使用 Redis 过期事件监听器来更新数据库状态,我们需要确保 Redis 的事件通知已启用,并实现监听器来捕获过期的键,并根据需要更新数据库,本文给大家介绍了Redis过期事件监听器的完整实现步骤,需要的朋友可以参考下
    2024-10-10
  • 为Java项目添加Redis缓存的方法

    为Java项目添加Redis缓存的方法

    Redis一般有Linux和Windows两种安装方式,本文就这两种方式给大家详细介绍,对java项目添加redis缓存相关知识,感兴趣的朋友一起看看吧
    2021-05-05
  • Redis的Python客户端redis-py安装使用说明文档

    Redis的Python客户端redis-py安装使用说明文档

    这篇文章主要介绍了Redis的Python客户端redis-py安装使用说明文档,本文讲解了安装方法、入门使用实例、API参考和详细说明,需要的朋友可以参考下
    2015-06-06
  • Redis的哈希Hash类型常用命令的使用小结

    Redis的哈希Hash类型常用命令的使用小结

    Redis哈希类型类似于一个键值对集合,通常用于存储对象,每个哈希包含多个字段,每个字段都有一个值,哈希类型支持一系列常用命令,下面就来详细的介绍一下这些命令的使用,感兴趣的可以了解一下
    2025-08-08
  • sentinel支持的redis高可用集群配置详解

    sentinel支持的redis高可用集群配置详解

    这篇文章主要为大家介绍了sentinel支持的redis高可用集群配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04

最新评论