当前位置:网站首页>缓存击穿,缓存穿透,缓存雪崩的解释和对应的一些解决方案
缓存击穿,缓存穿透,缓存雪崩的解释和对应的一些解决方案
2022-08-09 09:28:00 【潇湘梦】
redis缓存的一些思考内容
NOSQL数据库,缓存查询很快,那么有哪些问题需注意的呢?
1.缓存穿透
用户需要查询一个数据发现在缓存数据库中没有,也就是常说的没有击中缓存,于是向持久层去查询,发现持久层页没有,于是本次查询失败,当用户多起来的时候,缓存没有命中就会不断的去请求持久层的服务,这样就造成了持久层的很大的压力,这就相当于出现了缓存的穿透。
解决的方案:
布隆过滤器:通过这是一些常用的值的集合,不在集合中的就直接丢弃,不在对持久层进行访问和处理。
缓存空对象方案:
当缓存不命中的时候返回一个空对象,在对空对象进行一个时效性的操作。这样能在时效性范围内保护后端持久层不暴露出来,有效的保护了持久层。
2缓存击穿
缓存击穿 意思是指一个key非常热点,在不停的扛着大并发击中的进行访问,当找个key在时效的瞬间,持续的大并发访问就穿透了缓存直接发给请求持久层。造成DB的压力。就相当于在外围的防御突然出现了一个洞,洞口涌现了大量的攻击点。
3.缓存雪崩
缓存的雪崩 意思是在缓存出现问题,造成缓存不能正常的工作,所有的请求原来是在缓存挡着,现在直接调用持久层,造成持久层的访问来量暴增,突然的增加流量导致持久层的宕机。
解决方案:
1.redis的高可用
一台机器容易挂掉,宕机,多台机器组成集群不容易了。
2.限流降级
当缓存时效的时候通过枷锁,队列等方法控制读数据库写缓存的线程的数量。
3.数据预热
就是相当于在正式部署前,先将数据访问一遍,将需要大量访问的数据加载在缓存中,跟在大并发前手动将数据加载到缓存中操作。让缓存失效的时间均匀点,避免在同一个时间点缓存都时效。
如还有其他的方案和场景欢迎留言讨论研究
边栏推荐
- RPC服务远程漏洞
- pycharm在创建py文件时如何自动注释
- 本体开发日记05-努力理解SWRL(上)
- 4. Character stream
- class object property method class member
- 5. Transform Streams
- How much do you know about the mobile APP testing process specifications and methods?
- 接口开发规范及测试工具的使用
- 5.Set interface and implementation class
- China to create a domestic "Google Earth" clarity scary
猜你喜欢
随机推荐
图表示学习(Graph Representation Learning)笔记
免费下载天地图全国基础地理信息矢量数据的一种方法
3.编码方式
列表
mysql简单安装
【机器学习】数据科学基础——机器学习基础实践(二)
【个人学习总结】CRC校验原理及实现
Go-控制语句那些事
3. Practice the Thread
4. Character stream
自动化测试框架有哪几种?搭建的思路是什么?一篇文章让你彻底了解自动化
2.线程创建
8. Recursively traverse and delete cases
4.字符流
2.Collection接口
游戏测试的概念是什么?测试方法和流程有哪些?
What are the basic concepts of performance testing?What knowledge do you need to master to perform performance testing?
4.泛型和工具类
1.线程简介
“摄像头用不了”+win8.1+DELL+外置摄像头+USB免驱的解决办法