Skip to main content

5、缓存击穿

Y-aong...About 1 minredis缓存击穿

5、缓存击穿

一、定义

大量的请求同时查询一个 key 时,此时这个key正好失效了,就会导致大量的请求都打到数据库上面去。

redis的高QPS特性,可以很好的解决查数据库很慢的问题。但是如果我们系统的并发很高,在某个时间节点,突然缓存失效,这时候有大量的请求打过来,那么由于redis没有缓存数据,这时候我们的请求会全部去查一遍数据库,这时候我们的数据库服务会面临非常大的风险,要么连接被占满,要么其他业务不可用,这种情况就是redis的缓存击穿

二、缓存的设计

redis简单缓存设计
redis简单缓存设计

三、解决缓存击穿的问题

  • 定时任务主动刷新缓存

  • 多级缓存模式,不同的过期时间

    设置两个redis缓存值,两个缓冲设置不同的过期时间,然后利用定时任务主动刷新缓存,当其中一个缓冲过期后,立马查询另外一个缓冲数据这样可以有效的避免缓冲击穿的现象
    
    image-20230422104209647
    image-20230422104209647

四、注意点

  • 设置缓存的差异时间要大于数据插入到缓冲B的时间

  • 缓存的创建和查询顺序

    先更新B再更新A

    查询先查缓存A再查询缓存B

Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.15.8