缓存击穿,缓存穿透,缓存雪崩的解释和对应的一些解决方案

redis缓存的一些思考内容
NOSQL数据库,缓存查询很快,那么有哪些问题需注意的呢?
1.缓存穿透
用户需要查询一个数据发现在缓存数据库中没有,也就是常说的没有击中缓存,于是向持久层去查询,发现持久层页没有,于是本次查询失败,当用户多起来的时候,缓存没有命中就会不断的去请求持久层的服务,这样就造成了持久层的很大的压力,这就相当于出现了缓存的穿透。
解决的方案:
布隆过滤器:通过这是一些常用的值的集合,不在集合中的就直接丢弃,不在对持久层进行访问和处理。
缓存空对象方案:
当缓存不命中的时候返回一个空对象,在对空对象进行一个时效性的操作。这样能在时效性范围内保护后端持久层不暴露出来,有效的保护了持久层。

2缓存击穿
缓存击穿 意思是指一个key非常热点,在不停的扛着大并发击中的进行访问,当找个key在时效的瞬间,持续的大并发访问就穿透了缓存直接发给请求持久层。造成DB的压力。就相当于在外围的防御突然出现了一个洞,洞口涌现了大量的攻击点。

3.缓存雪崩
缓存的雪崩 意思是在缓存出现问题,造成缓存不能正常的工作,所有的请求原来是在缓存挡着,现在直接调用持久层,造成持久层的访问来量暴增,突然的增加流量导致持久层的宕机。

解决方案:
1.redis的高可用
一台机器容易挂掉,宕机,多台机器组成集群不容易了。
2.限流降级
当缓存时效的时候通过枷锁,队列等方法控制读数据库写缓存的线程的数量。
3.数据预热
就是相当于在正式部署前,先将数据访问一遍,将需要大量访问的数据加载在缓存中,跟在大并发前手动将数据加载到缓存中操作。让缓存失效的时间均匀点,避免在同一个时间点缓存都时效。

如还有其他的方案和场景欢迎留言讨论研究

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值