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。

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

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

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

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

总结

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

相关文章

  • 关于redis Key淘汰策略的实现方法

    关于redis Key淘汰策略的实现方法

    下面小编就为大家带来一篇关于redis Key淘汰策略的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 如何基于Session实现短信登录功能

    如何基于Session实现短信登录功能

    对比起Cookie,Session是存储在服务器端的会话,相对安全,并且不像Cookie那样有存储长度限制,下面这篇文章主要给大家介绍了关于如何基于Session实现短信登录功能的相关资料,需要的朋友可以参考下
    2022-10-10
  • 详解Redis单线程的正确理解

    详解Redis单线程的正确理解

    这篇文章主要介绍了详解Redis单线程的正确理解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Redis 部署模式详解

    Redis 部署模式详解

    Redis 支持多种部署模式,主要包括单机模式(Single)、哨兵模式(Sentinel)、集群模式(Cluster)及增强代理集群,分别适用于不同场景,以下是它们的详细介绍,感兴趣的朋友一起看看吧
    2025-07-07
  • Redis中哨兵机制和集群的区别及说明

    Redis中哨兵机制和集群的区别及说明

    Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根据数据量和扩展需求选择
    2025-08-08
  • redis的持久化和缓存机制解读

    redis的持久化和缓存机制解读

    这篇文章主要介绍了redis的持久化和缓存机制,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Redis集群节点通信过程/原理流程分析

    Redis集群节点通信过程/原理流程分析

    这篇文章主要介绍了Redis集群节点通信过程/原理,详细介绍了Cluster(集群)的节点通信的流程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 深入解析Redis中常见的应用场景

    深入解析Redis中常见的应用场景

    这篇文章主要给大家介绍了关于Redis中常见的应用场景的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • K8S redis 部署的项目实践

    K8S redis 部署的项目实践

    本文主要介绍了K8S redis 部署的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-05-05
  • Redis中的通用命令解读

    Redis中的通用命令解读

    这篇文章主要介绍了Redis中的通用命令,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07

最新评论