当前位置:网站首页>缓存击穿,缓存穿透,缓存雪崩的解释和对应的一些解决方案
缓存击穿,缓存穿透,缓存雪崩的解释和对应的一些解决方案
2022-08-09 09:28:00 【潇湘梦】
redis缓存的一些思考内容
NOSQL数据库,缓存查询很快,那么有哪些问题需注意的呢?
1.缓存穿透
用户需要查询一个数据发现在缓存数据库中没有,也就是常说的没有击中缓存,于是向持久层去查询,发现持久层页没有,于是本次查询失败,当用户多起来的时候,缓存没有命中就会不断的去请求持久层的服务,这样就造成了持久层的很大的压力,这就相当于出现了缓存的穿透。
解决的方案:
布隆过滤器:通过这是一些常用的值的集合,不在集合中的就直接丢弃,不在对持久层进行访问和处理。
缓存空对象方案:
当缓存不命中的时候返回一个空对象,在对空对象进行一个时效性的操作。这样能在时效性范围内保护后端持久层不暴露出来,有效的保护了持久层。
2缓存击穿
缓存击穿 意思是指一个key非常热点,在不停的扛着大并发击中的进行访问,当找个key在时效的瞬间,持续的大并发访问就穿透了缓存直接发给请求持久层。造成DB的压力。就相当于在外围的防御突然出现了一个洞,洞口涌现了大量的攻击点。
3.缓存雪崩
缓存的雪崩 意思是在缓存出现问题,造成缓存不能正常的工作,所有的请求原来是在缓存挡着,现在直接调用持久层,造成持久层的访问来量暴增,突然的增加流量导致持久层的宕机。
解决方案:
1.redis的高可用
一台机器容易挂掉,宕机,多台机器组成集群不容易了。
2.限流降级
当缓存时效的时候通过枷锁,队列等方法控制读数据库写缓存的线程的数量。
3.数据预热
就是相当于在正式部署前,先将数据访问一遍,将需要大量访问的数据加载在缓存中,跟在大并发前手动将数据加载到缓存中操作。让缓存失效的时间均匀点,避免在同一个时间点缓存都时效。
如还有其他的方案和场景欢迎留言讨论研究
边栏推荐
猜你喜欢
随机推荐
本体开发日记05-努力理解SWRL(RDF Concrete Syntax)
mysql 修改密码和忘记密码操作
本体开发日记02-sparql简单查询
7.FileFilter interface
本体开发日记05-努力理解SWRL(Built-Ins)
本体开发日记05-努力理解SWRL(上)
本体开发日记01-Jena配置环境变量
白盒测试的概念、目的是什么?及主要方法有哪些?
4. Character stream
How much do you know about the mobile APP testing process specifications and methods?
8. Recursively traverse and delete cases
自动化测试框架有哪几种?搭建的思路是什么?一篇文章让你彻底了解自动化
Go-指针的那些事
try catch 对性能影响
QT sets the icon of the exe executable
6.Map interface and implementation class
年薪40W测试工程师成长之路,你在哪个阶段?
【个人学习总结】CRC校验原理及实现
1.线程简介
2.Collection接口






