当前位置:网站首页>缓存击穿,缓存穿透,缓存雪崩的解释和对应的一些解决方案
缓存击穿,缓存穿透,缓存雪崩的解释和对应的一些解决方案
2022-08-09 09:28:00 【潇湘梦】
redis缓存的一些思考内容
NOSQL数据库,缓存查询很快,那么有哪些问题需注意的呢?
1.缓存穿透
用户需要查询一个数据发现在缓存数据库中没有,也就是常说的没有击中缓存,于是向持久层去查询,发现持久层页没有,于是本次查询失败,当用户多起来的时候,缓存没有命中就会不断的去请求持久层的服务,这样就造成了持久层的很大的压力,这就相当于出现了缓存的穿透。
解决的方案:
布隆过滤器:通过这是一些常用的值的集合,不在集合中的就直接丢弃,不在对持久层进行访问和处理。
缓存空对象方案:
当缓存不命中的时候返回一个空对象,在对空对象进行一个时效性的操作。这样能在时效性范围内保护后端持久层不暴露出来,有效的保护了持久层。
2缓存击穿
缓存击穿 意思是指一个key非常热点,在不停的扛着大并发击中的进行访问,当找个key在时效的瞬间,持续的大并发访问就穿透了缓存直接发给请求持久层。造成DB的压力。就相当于在外围的防御突然出现了一个洞,洞口涌现了大量的攻击点。
3.缓存雪崩
缓存的雪崩 意思是在缓存出现问题,造成缓存不能正常的工作,所有的请求原来是在缓存挡着,现在直接调用持久层,造成持久层的访问来量暴增,突然的增加流量导致持久层的宕机。
解决方案:
1.redis的高可用
一台机器容易挂掉,宕机,多台机器组成集群不容易了。
2.限流降级
当缓存时效的时候通过枷锁,队列等方法控制读数据库写缓存的线程的数量。
3.数据预热
就是相当于在正式部署前,先将数据访问一遍,将需要大量访问的数据加载在缓存中,跟在大并发前手动将数据加载到缓存中操作。让缓存失效的时间均匀点,避免在同一个时间点缓存都时效。
如还有其他的方案和场景欢迎留言讨论研究
边栏推荐
猜你喜欢
随机推荐
软件测试面试思路技巧和方法分享,学到就是赚到
一个项目的整体测试流程有哪几个阶段?测试方法有哪些?
class object property method class member
常用功能测试的检查点与用例设计思路
Domestic with Google earth software, see the download 19th level high-resolution satellite images so easy!
6.Map接口与实现类
类 对象 属性 方法 类的成员
Rights management model, ACL, RBAC and ABAC (steps)
3.练习Thread
本体开发日记02-sparql简单查询
MySQL Leak Detection and Filling (2) Sorting and Retrieval, Filtering Data, Fuzzy Query, Regular Expression
软件测试流程包括哪些内容?测试方法有哪些?
6.Map interface and implementation class
6. The File types
安装torch_sparse失败解决方法
接口设计
4. Character stream
STM32F103实现IAP在线升级应用程序
本体开发日记05-努力理解SWRL(RDF Concrete Syntax)
白盒测试的概念、目的是什么?及主要方法有哪些?