返回顶部
首页 > 资讯 > 数据库 >redis缓存延时双删的原因分析
  • 148
分享到

redis缓存延时双删的原因分析

redis缓存延时双删redis缓存延时 2022-08-16 09:08:09 148人浏览 安东尼
摘要

缓存为啥是删除,而不是更新? 如果是更新,存在分布式事务问题,可能出现修改了缓存,数据库修改失败的情况。只是删除缓存的话,就算数据库修改失败,下次查询会直接取数据库的数据,也不会出现脏数据。 延时双删是什么? 就是在增删

缓存为啥是删除,而不是更新?

如果是更新,存在分布式事务问题,可能出现修改了缓存,数据库修改失败的情况。只是删除缓存的话,就算数据库修改失败,下次查询会直接取数据库的数据,也不会出现脏数据。

延时双删是什么?

就是在增删改某实体类的时候,要对该实体类的缓存进行清空,清空的位置在数据库操作方法的前后。

采用反证法

只先删



在这里插入图片描述

只后删

在这里插入图片描述

结论

从而得出 前删和后删都有问题。所以采用延时双删的策略

思考2:为啥是延时

依然是反证法。下图这情况是双删依然存在旧缓存的情况,延时是确保 修改数据库-》清空缓存前,其他事务的更改缓存操作已经执行完。

在这里插入图片描述

补充:为什么要延迟双删,来保证缓存一致性

为什么要延迟双删,来保证缓存一致性

  • 在修改数据库数据前,需要先删除一次Redis:此时是为了保证在数据库数据修改和redis数据被删除的间隔时间内,如有命中,保证此数据也不存在redis中。如果没有这一次删除,当数据库数据已经被修改了,但是还是可以从redis中读出旧数据,导致数据不一致。
  • 第二次删除则是在修改数据库数据后,此时需要再次删除redis中对应数据一次,这一次是为了删除 第一次redis删除和数据库数据修改之间,如果有请求,那么旧数据又会重新缓存到redis中,然而数据在数据库中在接下来就会被修改,如果没有这一次删除,redis中则会存在数据库中旧的数据。
  • 那么第二次为什么需要在数据库修改后延迟一定时间再删除redis呢?
  • 为了等待之前的一次读取数据库,并等待其数据写入到缓存,最后删除这次脏数据,所以是一次数据从数据库中发到服务器+缓存写入的时间

延迟双删为什么要延迟

但是延迟双删,所延迟的时间非常的难以确定,所以并不推荐延迟双删

根据综合考虑,即使先修改数据库,在删除缓存,有一定的时间会导致读取到旧数据,这通常是可以被忍受的。
只要及时将缓存删除,其他线程就可以读取到最新的值。

同时为了保证缓存一定会被删除,可以采用MQ,来保证缓存会被删除

如果在mq中消息没有被重复消费,还会交由给其他消费者消费(将缓存删除)

到此这篇关于redis缓存延时双删的原因分析的文章就介绍到这了,更多相关redis缓存延时双删内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: redis缓存延时双删的原因分析

本文链接: https://lsjlt.com/news/33699.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • redis缓存延时双删的原因分析
    缓存为啥是删除,而不是更新? 如果是更新,存在分布式事务问题,可能出现修改了缓存,数据库修改失败的情况。只是删除缓存的话,就算数据库修改失败,下次查询会直接取数据库的数据,也不会出现脏数据。 延时双删是什么? 就是在增删...
    99+
    2022-08-16
    redis缓存延时双删 redis缓存延时
  • redis缓存延时双删指的是什么
    本文小编为大家详细介绍“redis缓存延时双删指的是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“redis缓存延时双删指的是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识...
    99+
    2024-04-02
  • redis缓存一致性延时双删代码实现方式
    目录Redis缓存一致性延时双删代码1、自定义注解2、刪除逻辑redis缓存延迟双删问题redis缓存一致性延时双删代码 不废话、、、如下 1、自定义注解 @Retention(RetentionPolicy.RUNT...
    99+
    2024-04-02
  • redis适合做缓存的原因
    这篇文章给大家分享的是有关redis适合做缓存的原因的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。   Redis是一款内存高速缓存数据库;数据模型为:key...
    99+
    2024-04-02
  • Redis缓存失效的原因有哪些
    Redis缓存失效的原因有以下几个: 过期时间到期:Redis缓存可以设置一个过期时间,当缓存的过期时间到期时,缓存就会失效。这...
    99+
    2023-10-27
    Redis
  • 分析数据库Seconds_Behind_Master延迟的原因
    本篇内容主要讲解“分析数据库Seconds_Behind_Master延迟的原因”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分析数据库Seconds_Behi...
    99+
    2024-04-02
  • 使用Redis做缓存的原因有哪些
    这篇文章给大家分享的是有关使用Redis做缓存的原因有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。对Redis,百度百科给出的的解释是“Redis(Remote Dicti...
    99+
    2024-04-02
  • Redis缓存问题的示例分析
    这篇文章给大家分享的是有关Redis缓存问题的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、Redis缓存的应用在我们的实际业务场景中,Redis 一般和其他数据库搭...
    99+
    2024-04-02
  • Redis中缓存雪崩、缓存击穿和缓存穿透的示例分析
    这篇文章主要为大家展示了“Redis中缓存雪崩、缓存击穿和缓存穿透的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Redis中缓存雪崩、缓存击穿和缓存穿...
    99+
    2024-04-02
  • Redis缓存IO模型的示例分析
    Redis缓存IO模型的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言redis作为应用最广泛的nosql数据库之一,大大小小也经历过很多次升级。在4.0版本之...
    99+
    2023-06-21
  • 亚马逊服务器延迟高的原因分析
    网络问题:亚马逊服务器通常都依赖于互联网。如果网络状况不稳定或者出现问题,服务器就可能会出现延迟高的情况。 内存和磁盘空间不足:如果应用程序需要的内存或磁盘空间不足,就会导致服务器出现延迟高的情况。 处理器性能不足:处理器性能不足会导致服...
    99+
    2023-10-27
    亚马逊 原因 服务器
  • sql语句执行缓慢的原因分析
    这篇文章主要介绍“sql语句执行缓慢的原因分析”,在日常操作中,相信很多人在sql语句执行缓慢的原因分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”sql语句执行缓慢的原因...
    99+
    2024-04-02
  • redis 设置生存和过期时间的原理分析
    目录在了解原理前 先来看使用方法原理过期键的判定Redis的过期键删除策略原理在了解原理前 先来看使用方法 通过EXPIRE命令或者PEXPIRE命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间,在经过指定...
    99+
    2024-04-02
  • redis 设置生存和过期时间的原理分析
    目录在了解原理前 先来看使用方法原理过期键的判定Redis的过期键删除策略原理在了解原理前 先来看使用方法 通过EXPIRE命令或者PEXPIRE命令,客户端可以以秒或者毫秒精度为数...
    99+
    2024-04-02
  • MySQL删除表时I/O错误的原因分析与解决
    问题现象 最近使用sysbench测试MySQL,由于测试时间较长,写了一个脚本按prepare->run->cleanup的顺序在后台跑着。跑完后察看日志发现一个问题,MySQL服务的错误日...
    99+
    2024-04-02
  • Mybatis的一级缓存和二级缓存原理分析与使用
    目录Mybatis的一级缓存和二级缓存1 Mybatis如何判断两次查询是完全相同的查询2 二级缓存2.1 二级缓存配置2.2 二级缓存特点2.3 配置二级缓存2.4 测试Mybat...
    99+
    2024-04-02
  • Redis架构中缓存雪崩的示例分析
    这篇文章主要介绍Redis架构中缓存雪崩的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 真实案例云办公系统用户实时信息查询功能优化发布之后,系统发生宕机事件(系统挂起,页面无法加载)。1.1 背景我们IM...
    99+
    2023-06-29
  • 亚马逊服务器延迟高的原因分析报告
    负载均衡器故障:负载均衡器是亚马逊服务器的重要组件,如果它出现故障,可能会导致服务器出现性能问题。可以通过检查连接是否正常、查看配置是否正确、检查服务器日志等方法来诊断负载均衡器是否出现故障。 内存问题:内存是亚马逊服务器的核心资源,如果...
    99+
    2023-10-27
    亚马逊 分析报告 原因
  • MySQL中socket文件被删除的原因分析
    这篇文章主要介绍了MySQL中socket文件被删除的原因分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。登陆数据库发现首先说明: 这个文...
    99+
    2024-04-02
  • Redis作为缓存应用的情形详细分析
    目录为什么使用缓存应用场景使用缓存的收益和成本缓存不一致业务场景先更新数据库值再更新缓存值删除缓存值再更新数据库值先更新数据库值在删除缓存值方案的详细设计订阅binlog总结缓存问题...
    99+
    2023-01-28
    Redis作为缓存 Redis作为缓存应用 Redis缓存
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作