欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

缓存雪崩,缓存穿透

程序员文章站 2022-03-08 22:24:04
缓存雪崩含义:redis中大量的热点数据,同时过期了(失效了)。是因为每个key都设置了相同的过去时间expire。如果这个时候并发访问量特别大,所有的请求都会落到数据库层面,给db造成特别大的压力。解决方式:设置过期时间的时候 增加一个 random随机数热点数据不会变化,永远不会去db请求,可以永久不过期预更新(定时扫描即将过期的数据 )。。。缓存穿透含义:查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询,发现也没有,......

缓存雪崩

 含义:

redis中大量的热点数据,同时过期了(失效了)。是因为每个key都设置了相同的过去时间expire。如果这个时候并发访问量特别大,所有的请求都会落到数据库层面,给db造成特别大的压力。

解决方式:

  1. 设置过期时间的时候   增加一个  random随机数
  2. 如果热点数据不会变化,可以不设置过期时间,也就是说永远不会去db请求
  3. 预更新(定时扫描即将过期的数据 )
  4. 。。。

缓存穿透

 含义:

查询一个数据,发现redis缓存没有命中,于是向持久层数据库查询,发现也没有,说明本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透

解决方式:

  • 1.布隆过滤器 

解决在海量元素中快速判断一个元素是否存在。例如100亿随机数无序,不定长,不重复,判断34432这个数是否在这100亿个随机数中存在。虽然会有误差率,但是一般准确率会打到97% 左右,大大减少了穿透的次数。

  • 特点
  1. 如果布隆过滤器判断元素在集合中存在,不一定存在(因为会发生hash碰撞,得到的结果会有误差
  2. 如果布隆过滤器判断元素在集合中不存在,一定不存在
  3. 如果元素实际存在,布隆过滤器判断一定存在
  4. 如果元素实际不存在,布隆过滤器判断可能存在
  • 2.没有请求到数据也要添加到redis中,设置为null,并且设置过期时间保证数据一致性

本文地址:https://blog.csdn.net/as875784622/article/details/107312264