Redis缓存相关问题

Redis缓存相关问题

1 缓存穿透

  缓存穿透是指查询一个数据库一定不存在的数据.
正常使用Redis缓存的流程大致是:

  1. 数据查询首先进行缓存查询
  2. 如果数据存在则直接返回缓存数据
  3. 如果数据不存在,就对数据库进行查询,并把查询到的数据放进缓存
  4. 如果数据库查询数据为空,则不放进缓存

  如果有人恶意查询数据库中不存在的数据,就会对数据库造成压力,甚至压垮数据库,解决该问题的方法为:

  如果从数据库中查询的对象为空,也放入缓存,将用户提交的主键值其value设为null,并且将缓存过期时间设为60秒,即使恶意攻击也是从缓存中查询为null,不会频繁查询数据库.

2 缓存雪崩

  缓存雪崩,是指在某一个时间段,缓存集中过期失效.在缓存集中失效的这个时间段对数据的访问查询,都落到了数据库上,对于数据库而言,就会产生周期性的压力波峰.

  为了避免雪崩的发生,可以将缓存的数据设置不同的失效时间.将访问频率高的数据缓存时间设置长一些,冷门的时间短一些.

3 缓存击穿

  缓存击穿,是指一个 key 非常热点,不停的被集中的进行访问,当这个数据在key失效的瞬间,持续的并发访问就会击破缓存,直接请求到数据库上.
  将热点数据设置永不过期就可以解决缓存击穿的问题了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值