缓存击穿问题

一、缓存击穿问题:

问题描述:

1.查询一个必然不存在的数据。比如文章表,查询一个不存在的id,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成影响。

2.缓存过期时间相同,同时失效,就会击穿。

问题解决:

1.最简单的方法就是再查库的时候 把这个key缓存为空 

–缓存太多空值,占用更多空间。(优化:给个空值过期时间) 
–存储层更新代码了,缓存层还是空值。(优化:后台设置时主动删除空值,并缓存把值进去)

–有可能黑客拿10000万种不同的key 你的redis都没有 还是会造成缓存击穿。

2.将数据库中所有的查询条件,放到redis中,做成key-value结构,利用redis的setNX方法判断key是否在存在,如果存在则查库,如果不存在就直接返回空。这种最保险。

 

二  热点key问题:

1.问题描述:压测的时候我创建100万个相同的key去访问,这时候相同的key都会落到redis相同的分片上,redis同一个分片大概会支持3-4W的并发,这时候就会超时。

2.问题解决:

1.利用谷歌的guawa本地缓存。redis上一层加一层本地缓存。

2.利用一主多从的redis集群,一个集群支持3-4W 十个集群就支持30-40W,这样有个缺点 就是资源耗费太大,其实阿里就是这么做的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值