Redis之雪崩效应,缓存穿透,缓存击穿的概念

一、雪崩效应

  • 概念
    如果redis中的所有的Key在同一时间失效的情况下,如果突然有大量的请求访问服务器的时候,会直接导致数据库连接异常,甚至直接瘫痪整套系统。
  • 解决方案:
    1. 采用分布式锁(不推荐)
    2. 采用消息中间件(利用消息中间件缓解服务器访问压力,并保证数据不丢失(推荐)
    3. 建立一级缓存和二级缓存(ehcache)(推荐)
    4. 均摊分配redis key的失效时间(推荐)

二、缓存穿透

  • 概念
    客户端随机生成的key,在redis缓存中没有该数据,数据库中也没有该数据,这样话可能会导致一直发生jdbc请求连接,导致数据库连接异常等情况出现。
  • 解决方案
  1. 当数据库查不到对应值时,我们可以在redis设置该key,值设置为null,当这个值数据更新时,应当删除这个为null的缓存,或更新该缓存。
  2. 使用布隆过滤(基于Google的Guava)

三、缓存击穿

  • 概念
    单个热点key在失效的同时,产生了大量高并发的查询情况下,可能会导致服务器连接异常
  • 解决方案
  1. 使用分布式锁,致使一个请求去查询数据库,其他等待,待查询完成后更新redis缓存,其他线程再去查找redis就能够成功查询到该数据了,
  2. 设置key永不过期(不推荐,因为不切实际)

你可能感兴趣的:(Redis之雪崩效应,缓存穿透,缓存击穿的概念)