Redis缓存知识-穿透、击穿、雪崩
目录
- 一、Redis介绍
- 二、Redis做缓存服务器
- 三、缓存穿透&击穿&雪崩
- 1、缓存穿透
- 2、缓存击穿
- 3、缓存雪崩
大家好,我是杨叔。每天进步一点点,关注我的微信公众号【程序员杨叔】,获取更多测试开发技术知识!今天分享的内容是:Redis缓存知识-穿透、击穿、雪崩。
一、Redis介绍
Redis是一个C语言编写的开源的高性能的key-value 数据库, 是目前分布式架构中不可或缺的一环。Redis具备以下的特点:
- Redis具有极高的数据读写速度:数据读取的速度最高可达到 110000 次/s,数据写入速度最高可达到81000次/s,平均100000次/s;
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储;
- Redis支持分布式集群部署,以应对高并发压力,集群通过分片( sharding )来实现数据共享,并提供复制和故障转移;
- Redis的所有操作都是原子性的,所谓原子操作就是指这种操作一旦开始,就一直运行到结束,不会被线程调度机制打断的操作,中间不会有任何context switch(切换到另一个线程)。在多线程访问共享资源时,能够确保所有其他的线程都不在同一时间 内访问相同的资源,从而保证数据是可靠的。
二、Redis做缓存服务器
由于Redis具备的高数据读写特性,因此Redis通常都会被用来做缓存服务器,解决高并发下数据响应慢的问题,同时也减少数据库服务器的压力。
作为测试同学,不管是功能测试还是性能测试,都是非常有必要了解缓存业务是如何实现的。缓存业务逻辑图举例说明如下:
三、缓存穿透&击穿&雪崩
1、缓存穿透
问题描述:用户发起大量的请求,结果发现 Redis 中没有数据,后台查询数据库,发现数据库也没有数据,因为没有数据,也就不能更新缓存,就这样一直请求落到了数据库,导致数据库崩溃;这种大量的请求,可能是接口本身的并发量就比较大,也可能是有黑客在攻击。
解决方案:
异常参数校验:比如发起一个 id 为 “-1” 的请求,这一看就是有问题的,哪有可能 id 为负数的。或者一些非空参数,传了空值,极有可能是某人在发起攻击,直接后台判断拦截;优点: 最快,也是最简单的拦截方式,没有额外的资源开销,缺点: 适用的场景有限;
空值缓存:当查询缓存和数据库都没有值时,给缓存中更新一个查询结果,值为空值并设置过期时间;
布隆过滤器:布隆过滤器是一种数据结构,部署在redis的前面,去拦截数据,减少对redis的冲击。对所有可能查询到的参数都以hash的方式存储在布隆过滤器中,当一个查询请求过来时,先经过布隆过滤器在控制层进行校验,如果判断请求查询值存在,则继续查,如果判断请求查询不存在,直接丢弃,这就避免了对底层存储系统的压力。
2、缓存击穿
问题描述:用户发起大量的请求,这时 Redis 中数据大量过期,导致瞬间数据库压力暴增,导致数据库宕机;或者用户大量访问非热点数据,没有在Redis中缓存,导致瞬间数据库压力暴增,导致数据库宕机;
解决方案:
设置热点数据永远不过期;
设置热点数据的存活时间较长,且分布均匀的岔开过期时间,降低了出现大量过期的频率;
所有可能高频访问的数据提前做好缓存预热;
限流做安全保障;
3、缓存雪崩
问题描述:Redis 层由于压力过大,导致 Redis 服务器宕机,所有后端请求直接落在数据库上,导致数据库也宕机;
解决方案:
Redis 高可用:顾名思义,通过多台的 Redis 架设集群,分摊压力;
限流:通过限制访问数量的方式,防止大量的请求进入缓存,可以通过限制 IP 频率,限制请求总量,或者使用消息队列依次处理请求等方式;
=================================================================================================
以上就是本次的全部内容,如果对你有帮助,欢迎关注我的微信公众号:程序员杨叔,各类文章、测试资料都会第一时间在上面发布,持续分享全栈测试知识干货,你的支持就是作者更新最大的动力~
Redis缓存知识-穿透、击穿、雪崩相关推荐
- Redis缓存/穿透/击穿/雪崩
目录 1 缓存穿透 1.1 问题描述 1.2 产生原因 1.3 解决方案 2 缓存击穿 2.1 问题描述 2.2 解决方案 3 缓存雪崩 3.1 问题描述 3.2 解决方案: 1 缓存穿透 1.1 问 ...
- Redis缓存穿透击穿雪崩
目录 1.缓存穿透 2.缓存击穿 3.缓存雪崩 1.缓存穿透 概述: 缓存穿透的概念很简单,用户想要査询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库査询.发现也数据库 ...
- 一文搞懂Redis缓存穿透/击穿/雪崩
缓存穿透 问题描述 缓存穿透是指查询一个一定不存在的数据,由于缓存时不命中的,则需要从数据库中查询.查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库中去查询,进而增大了数据库的压力 ...
- Redis综述篇:与面试官彻夜长谈Redis缓存、持久化、淘汰机制、哨兵、集群底层原理!...
点击上方关注 "终端研发部" 设为"星标",和你一起掌握更多数据库知识 于哥你好,最近面试挺多的,尤其是在问到java面试题,Redis被问的特别多,比如Red ...
- Redis入门到实战(实战篇)缓存更新、穿透、雪崩、击穿!
Redis基础篇 Java面试宝典-redis 实战篇Redis 开篇导读 亲爱的小伙伴们大家好,马上咱们就开始实战篇的内容了,相信通过本章的学习,小伙伴们就能理解各种redis的使用啦,接下来咱们来 ...
- Redis缓存击穿、雪崩、穿透!(超详细)
缓存的击穿.穿透和雪崩应该是再熟悉不过的词了,也是面试常问的高频试题. 不过,对于这三大缓存的问题,有很多人背过了解决方案,却少有人能把思路给理清的. 而且,网络上仍然充斥着,大量不太靠谱的解决方案, ...
- Redis学习 - NoSQL简介、redis安装、redis基础知识、数据类型、持久化、订阅发布、主从复制、哨兵模式、缓存击穿和雪崩
学习视频地址:https://www.bilibili.com/video/BV1S54y1R7SB 完结撒花,感谢狂神 文章目录 1. NoSQL 1.1 单机Mysql的演进 1.2 当今企业架构 ...
- Redis 缓存雪崩、击穿、穿透
Redis 缓存雪崩.击穿.穿透 文章目录 Redis 缓存雪崩.击穿.穿透 一.Redis基础 Redis基本数据类型.操作 二.面试相关问题 1.小伙子您好,看你简历上写了你项目里面用到了Redi ...
- Redis 缓存击穿,缓存穿透,缓存雪崩原因+解决方案
一.前言 在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是 ...
最新文章
- 2.2.1 静态成员
- Vim快捷输出查找寄存器的内容(去除\,\和\V)
- 没有docker,谈什么微服务架构?
- UITableView 重用cell方法edequeueReusableCellWithIdentifier,出现错误
- 一个简单的Makefile模板
- MyBatis复习(十):注解开发
- BZOJ:4820: [Sdoi2017]硬币游戏BZOJ:1444: [Jsoi2009]有趣的游戏(高斯消元求概率)
- SQL server 查询语句
- 【干货】微信私域运营实战指南.pdf(附下载链接)
- 计算机视觉(CV)中图像的梯度
- java设计模式--基础思想总结--抽象类与架构设计思想
- ant design pro(二)布局
- pymssql的简单使用
- echarts地图各种点位实现
- EM30719 i2c不能正常读
- 聊聊接口性能优化的11个小技巧
- 【菜鸟进阶之路】P2141 珠心算测验 - 洛谷
- [Data Structure] 数据结构中各种树
- Vue.js学习详细课程系列--共32节(4 / 6)
- 工业物联网 | 智能网关实现换热站远程监控方案