redis经常遇到的三个问题以及解决方案
1.redis缓存穿透问题
问题产生的原因:前段发起请求查询后端数据,由于这个查询条件没有结果数据,导致redis缓冲层跟mysql数据库都没查到数据,如果类似的请求并发量特别大,每次都需要查询Mysql,并且没有结果,也无法存储到redis缓存中,导致mysql需要承载大量的并发,有可能导致数据库出现宕机。
解决方案:1)提前设置过滤条件,把非法查询请求直接过滤掉。
2)将查询不到的结果信息也存储到redis缓存中。
2.redis缓存击穿问题
问题产生原因:查询的key在redis中出现了过期,导致这个Key在redis中无法查询到,此时这个查询请求会击穿redis,进入到后台数据库中,正常情况是当redis缓存过期后,依然需要这个key值查询,可以再次查询mysql后将值重新保存到redis的缓存中,但是如果这个key对应的并发请求比较多,一旦这个key出现宕机,瞬间所有的并发请求全部都会请求到Mysql,此时可能导致mesql直接宕机。
解决方案:通过互斥锁解决,让并发请求在后台阻塞,只让其中一个请求访问后台数据库,讲查询的结果再次缓存到redis中,然后放开所有的请求,此时所有的请求只会在redis中查询。
3.redis的雪崩问题
问题产生原因:让redis出现宕机,或者redis中的key大量出现集中过期,导致大量的并发请求集中打向后台数据库,从而导致数据库出现宕机。
解决方案:1)如果出现redis宕机问题,可以采取哨兵模式,redis集群模式。
2)如果是大量key值出现集中过期:
方案一:通过在原有过期时间上再+上一些随机值,保证Key不会在同一时间 大量出现过期。
方案二:通过加锁或者队列的方式。
redis经常遇到的三个问题以及解决方案相关推荐
- Redis实战之征服 Redis + Jedis + Spring (三)
一开始以为Spring下操作哈希表,列表,真就是那么土.恍惚间发现"stringRedisTemplate.opsForList()"的强大,抓紧时间恶补下. 通过spring-d ...
- 关于Redis缓存,这三个问题一定要知道!
作者:奔跑的奶酪二哈 cnblogs.com/xiaowei123/p/13211403.html 二哈最近都没看Redis,现在回来温习下,现在从Redis的三大缓存开始重新探一探有多深有多浅(^▽ ...
- Redis(四)------三种特殊数据类型
Redis(四)------三种特殊数据类型 7.三种特殊数据类型 7.1 Geospatial(地理位置) 使用经纬度定位地理坐标,并用一个有序集合Zset保存,所以,Zset的命令也可以使用 有效 ...
- Redis高可用的三种实现方式
Redis高可用的三种实现方式 1. 高可用的概念 高可用(High Availability,即HA),指的是通过尽量缩短日常维护操作和突发的系统崩溃所导致的停机时间,以提高系统和应用的可用性. ...
- Redis常用命令(三,共三篇)
目录 1.redis的配置文件: 1).redis配置文件中关于网络的配置: 2).常规配置: 3).安全配置: 2.redis的持久化: 1.RDB策略: 在指定时间间隔内,redis服务执行指定次 ...
- Redis性能篇(三)Redis关键系统配置:如何应对Redis变慢GTA
Redis被广泛使用的一个很重要的原因是它的高性能.因此我们必要要重视所有可能影响Redis性能的因素.机制以及应对方案.影响Redis性能的五大方面的潜在因素,分别是: Redis内部的阻塞式操作 ...
- Redis的启动方式三种
Redis的启动方式三种 启动一个 ,进入到redis中的src目录下 在控制台输入指令:redis-server (注意:这样启动默认端口是 6379 ) 进入客户端输入:redis-cli 查看进 ...
- Redis 消息队列的三种方案选型
文章目录 Redis 消息队列的三种方案选型 消息队列(Message Queue,简称 MQ) 消息队列使用场景 Redis 消息队列应用背景,选型思考 Redis消息队列发展历程 在Redis中提 ...
- Redis事务失效的三种场景
文章目录 Redis 事务失效的三种场景 命令入队报错 命令执行报错 乐观锁导致失效 Redis 事务失效的三种场景 Redis事务失败,有三种类型的失败场景: 命令入队报错 在事务提交之前,客户端执 ...
最新文章
- 注意力机制的本质中文版代码
- AS3.0(3)-函数;类;对象
- 恶意软件伪装成系统更新,通杀Win Mac Linux三大系统,隐藏半年才被发现
- 几条跟堆栈扯上关系的汇编指令
- [HNOI2011]XOR和路径
- vue.js 编程导航,如何传递参数?
- python nums函数获取结果记录集有多少行记录_python3 数据挖掘之pandas学习记录(一)-----NumPy...
- ActiveMQ-为什么需要消息中间件及优缺点
- (四)Java中的多线程之间实现同步+多线程并发同步
- 【C++】n_element的用法
- PLC项目增频减频部分流程图(修改版)
- 译者后记 ——《DOOM启示录》读后感(二)
- empire-CVE-2018-19462
- 北京亚信科技java笔试题_亚信科技java面试题及答案
- 【券后价16.80元】【海蓝蓝】夹心海苔脆芝麻海苔即食罐装海苔宝宝辅食儿童零食40克...
- Python之爬取《你好,李焕英》电影豆瓣短评
- python周末_python区分节假日、工作日、周末
- Java中的多态,引用类型的转换
- lisp填挖横断面提取_求助,AUTOLISP语言的这个程序流程图怎么写。关于纵横断面绘制的...
- Windows 11 内置原生壁纸下载!
热门文章
- MacBookAir电脑删除了Windows分区之后,无法进行分区合并
- vc查看进程PID和关闭进程方法
- 计算机一级的含金量高吗,2019计算机一级有必要考吗 含金量怎么样
- 【linux CentOS 7】CentOS 7.4 挂载光驱
- go template基本使用
- Gym - 101158J -Cover the Polygon with Your Disk(模拟退火+多边形与圆面积的交)
- inline函数用法详解
- 3.5 毫米耳机插座插头的结构和接线方式
- 七种常用监督类预测模型的特征、优缺点整理
- 日语python怎么说_python – 将输出翻译成日语