• Redis缓存以及存在的问题--缓存穿透、缓存雪崩、缓存击穿及解决方法


    Redis缓存以及存在的问题--缓存穿透、缓存雪崩、缓存击穿及解决方法

    Redis缓存

    缓存就是数据交换的缓冲区,是存贮数据的临时地方,一般读写性能较高。

    为什么要使用Redis缓存呢?因为普通的基于的磁盘的数据库的IO速度相较于业务需要来说过慢,因此可以将Redis(基于内存的数据库)作为缓存中间件,将数据库中的频繁访问的数据存入到Redis中,提升数据库的访问速度,满足业务需求。

    使用Redis缓存可以 降低后端负载,提高读写效率,降低访问时间。

    使用Redis来做缓存,一般来讲都如下图所示:
    在这里插入图片描述
    当客户端有数据请求之后,首先会去访问Redis,如果Redis中存在,则直接返回,如果不存在则请求数据库,数据将返回的数据写入Redis,方便下次访问,并且将数据返回给客户端。

    缓存更新策略

    1. 低一致性需求:使用Redis自带的内存淘汰机制。
    2. 高一致性需求
      读操作: 缓存命中,则直接返回;缓存未命中,则查询数据库,写入缓存,设定超时时间。
      写操作:先写数据库,再更新缓存。要确保数据库操作与缓存操作的原子性。

    使用Redis缓存注意的问题

    缓存穿透

    缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库,不断发起这样的请求,给数据库带来巨大压力。

    解决方法:
    1.缓存空对象
    对于不存在的数据也在Redis建立缓存,值为空,并设置一个较短的TTL时间。
    在这里插入图片描述

    优点:实现简单,维护方便;
    缺点:额外的内存消耗;会存在短期的数据不一致的问题。

    2.布隆过滤
    利用布隆过滤算法,在请求进入Redis之前先判断是否存在,如果不存在则直接拒绝请求。
    在这里插入图片描述

    优点:内存占用少。
    缺点:实现复杂;存在误判的可能性。

    3.其他方式

    • 做好数据的基础格式校验;
    • 加强用户权限校验;
    • 做好热点参数的限流。

    缓存雪崩

    在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。我们可以根据描述的问题寻找解决方法。

    解决方法:

    • 给不同的Key的TTL添加随机值;
    • 利用Redis集群提高服务的可用性;
    • 给缓存业务添加降级限流策略;
    • 给业务添加多级缓存;

    缓存击穿

    缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。

    解决方法:
    1.互斥锁
    因为当热点key突然过期时,同时会有多个请求同时访问数据库,带给数据库巨大冲击,因此只需要让一个请求去访问数据库,并重建缓存,其他请求在缓存重建之后通过访问缓存即可。这可以通过添加互斥锁的方式实现。即给缓存重建过程加锁,确保重建过程只有一个线程执行,其它线程等待。
    在这里插入图片描述

    优点:实现简单;没有额外内存消耗;一致性好。
    缺点:等待导致性能下降;有死锁风险。

    2.设置热点key永不过期,即设置逻辑过期时间。

    热点key缓存永不过期,而是**设置一个逻辑过期时间,查询到数据时通过对逻辑过期时间判断,来决定是否需要重建缓存。**重建缓存也通过互斥锁保证单线程执行。重建缓存利用独立线程异步执行。其它线程无需等待,直接查询到的旧数据即可。
    在这里插入图片描述

    优点:线程无需等待,性能较好。
    缺点:不保证一致性(弱一致性);有额外内存消耗;实现复杂。

  • 相关阅读:
    读书笔记:《Kubernetes:快速入门》
    云计算 2月28号 (linux的磁盘分区)
    c与c++中的字符串
    透明多级分流系统(架构扫盲贴)
    网络安全(黑客)自学
    c++模板库容器list vector map set操作和性能对比
    阿里云 Serverless 异步任务处理系统在数据分析领域的应用
    css排版—— 一篇优雅的文章(中英文) vs 聊天框的特别排版
    idea新建一个module时,文件夹显示灰色/pom.xml文件显示灰色且中间有条横线
    WPS被曝删除用户本地文件,官方两度回应:不会侵犯用户隐私
  • 原文地址:https://blog.csdn.net/qq_36944952/article/details/126160227