企业级解决方案Redis

news2025/7/11 0:08:14

缓存预热

“宕机”

服务器启动后迅速宕机

1. 请求数量较高

2. 主从之间数据吞吐量较大,数据同步操作频度较高

解决方案

前置准备工作:

1. 日常例行统计数据访问记录,统计访问频度较高的热点数据

2. 利用LRU数据删除策略,构建数据留存队列

例如:storm与kafka配合

准备工作:

1. 将统计结果中的数据分类,根据级别,redis优先加载级别较高的热点数据

2. 利用分布式多服务器同时进行数据读取,提速数据加载过程

3. 热点数据主从同时预热

实施:

1. 使用脚本程序固定触发数据预热过程

2. 如果条件允许,使用了CDN(内容分发网络),效果会更好

总结

缓存预热就是系统启动前,提前相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据!

缓存雪崩

数据库服务器崩溃(1)

1. 系统平稳运行过程中,忽然数据库连接量激增

2. 应用服务器无法及时处理请求

3. 大量408,500错误页面出现

4. 客户反复刷新页面获取数据

5. 数据库崩溃

6. 应用服务器崩溃

7. 重启应用服务器无效

8. Redis服务器崩溃

9. Redis集群崩溃

10. 重启数据库后再次被瞬间流量放倒

问题排查

1. 在一个较短的时间内,缓存中较多的key集中过期

2. 此周期内请求访问过期的数据,redis未命中,redis向数据库获取数据

3. 数据库同时接收到大量的请求无法及时处理

4. Redis大量请求被积压,开始出现超时现象

5. 数据库流量激增,数据库崩溃

6. 重启后仍然面对缓存中无数据可用

7. Redis服务器资源被严重占用,Redis服务器崩溃

8. Redis集群呈现崩塌,集群瓦解

9. 应用服务器无法及时得到数据响应请求,来自客户端的请求数量越来越多,应用服务器崩溃

10. 应用服务器,redis,数据库全部重启,效果不理想

解决方案(道)

1. 更多的页面静态化处理

2. 构建多级缓存架构

Nginx缓存+redis缓存+ehcache缓存

3. 检测Mysql严重耗时业务进行优化

对数据库的瓶颈排查:例如超时查询、耗时较高事务等

4. 灾难预警机制

监控redis服务器性能指标

 CPU占用、CPU使用率

 内存容量

 查询平均响应时间

 线程数

5. 限流、降级

短时间范围内牺牲一些客户体验,限制一部分请求访问,降低应用服务器压力,待业务低速运转后再逐步放开访问

解决方案(术)

1. LRU与LFU切换

2. 数据有效期策略调整

 根据业务数据有效期进行分类错峰,A类90分钟,B类80分钟,C类70分钟

 过期时间使用固定时间+随机值的形式,稀释集中到期的key的数量

3. 超热数据使用永久key

4. 定期维护(自动+人工)

对即将过期数据做访问量分析,确认是否延时,配合访问量统计,做热点数据的延时

5. 加锁

慎用!

总结

缓存雪崩就是瞬间过期数据量太大,导致对数据库服务器造成压力。如能够有效避免过期时间集中,可以有效解决雪崩现象的出现(约40%),配合其他策略一起使用,并监控服务器的运行数据,根据运行记录做快速调整。

缓存击穿

数据库服务器崩溃(2)

1. 系统平稳运行过程中

2. 数据库连接量瞬间激增

3. Redis服务器无大量key过期

4. Redis内存平稳,无波动

5. Redis服务器CPU正常

6. 数据库崩溃

问题排查

1. Redis中某个key过期,该key访问量巨大

2. 多个数据请求从服务器直接压到Redis后,均未命中

3. Redis在短时间内发起了大量对数据库中同一数据的访问

问题分析

 单个key高热数据

 key过期

解决方案(术)

1. 预先设定

以电商为例,每个商家根据店铺等级,指定若干款主打商品,在购物节期间,加大此类信息key的过期时长

注意:购物节不仅仅指当天,以及后续若干天,访问峰值呈现逐渐降低的趋势

2. 现场调整

监控访问量,对自然流量激增的数据延长过期时间或设置为永久性key

3. 后台刷新数据

启动定时任务,高峰期来临之前,刷新数据有效期,确保不丢失

4. 二级缓存

设置不同的失效时间,保障不会被同时淘汰就行

5. 加锁

分布式锁,防止被击穿,但是要注意也是性能瓶颈,慎重!

总结

缓存击穿就是单个高热数据过期的瞬间,数据访问量较大,未命中redis后,发起了大量对同一数据的数据库访问,导致对数据库服务器造成压力。应对策略应该在业务数据分析与预防方面进行,配合运行监控测试与即时调整策略,毕竟单个key的过期监控难度较高,配合雪崩处理策略即可。

缓存穿透

数据库服务器崩溃(3)

1. 系统平稳运行过程中

2. 应用服务器流量随时间增量较大

3. Redis服务器命中率随时间逐步降低

4. Redis内存平稳,内存无压力

5. Redis服务器CPU占用激增

6. 数据库服务器压力激增

7. 数据库崩溃

问题排查

1. Redis中大面积出现未命中

2. 出现非正常URL访问

问题分析

 获取的数据在数据库中也不存在,数据库查询未得到对应数据

 Redis获取到null数据未进行持久化,直接返回

 下次此类数据到达重复上述过程

 出现黑客攻击服务器

解决方案(术)

1. 缓存null

对查询结果为null的数据进行缓存(长期使用,定期清理),设定短时限,例如30-60秒,最高5分钟

2. 白名单策略

 提前预热各种分类数据id对应的bitmaps,id作为bitmaps的offset,相当于设置了数据白名单。当加载正常数据时,放行,加载异常数据时直接拦截效率偏低)//不过数据库

 使用布隆过滤器(有关布隆过滤器的命中问题对当前状况可以忽略)//布隆过滤器不是百分之百可以命中

3. 实施监控

实时监控redis命中率(业务正常范围时,通常会有一个波动值)与null数据的占比

 非活动时段波动:通常检测3-5倍,超过5倍纳入重点排查对象

 活动时段波动:通常检测10-50倍,超过50倍纳入重点排查对象

根据倍数不同,启动不同的排查流程。然后使用黑名单进行防控(运营)

4. key加密

问题出现后,临时启动防灾业务key,对key进行业务层传输加密服务,设定校验程序,过来的key校验

例如每天随机分配60个加密串,挑选2到3个,混淆到页面数据id中,发现访问key不满足规则,驳回数据访问

总结

缓存击穿访问了不存在的数据,跳过了合法数据的redis数据缓存阶段,每次访问数据库,导致对数据库服务器造成压力。通常此类数据的出现量是一个较低的值,当出现此类情况以毒攻毒,并及时报警。应对策略应该在临时预案防范方面多做文章。

无论是黑名单还是白名单,都是对整体系统的压力,警报解除后尽快移除。

性能指标监控

监控指标

 性能指标:Performance

 内存指标:Memory

 基本活动指标:Basic activity

 持久性指标:Persistence

 错误指标:Error

 性能指标:Performance

 内存指标:Memory

 基本活动指标:Basic activity

 持久性指标:Persistence

 错误指标:Error

监控方式

 工具

 Cloud Insight Redis

 Prometheus

 Redis-stat

 Redis-faina

 RedisLive

 zabbix

 命令

 benchmark

 redis cli

 monitor

 showlog

benchmark

 命令

redis-benchmark [-h ] [-p ] [-c ] [-n <requests]> [-k ]

 范例1

redis-benchmark

说明:50个连接,10000次请求对应的性能

 范例2

redis-benchmark -c 100 -n 5000

说明:100个连接,5000次请求对应的性能

monitor

 命令

monitor

打印服务器调试信息

showlong

 命令

showlong [operator]

 get :获取慢查询日志

 len :获取慢查询日志条目数

 reset :重置慢查询日志

 相关配置

slowlog-log-slower-than 1000 #设置慢查询的时间下线,单位:微妙
slowlog-max-len 100 #设置慢查询命令对应的日志显示长度,单位:命令数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/361912.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全链路压力测试

压力测试的目标&#xff1a; 探索线上系统流量承载极限&#xff0c;保障线上系统具备抗压能力 复制代码 如何做全链路压力测试&#xff1a; 全链路压力测试&#xff1a;整体步骤 容量洪峰 -》 容量评估 -》 问题发现 -》 容量规划 全链路压力测试&#xff1a;细化过程 整体目…

Apache Shiro与Spring Security对比

Apache Shiro VS Spring Security 1.Spring Security 官方文档&#xff1a;https://spring.io/projects/spring-security#overview介绍&#xff1a; Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spr…

Java 基础(3)—synchornized 关键字简单理解

一、synchronized 修饰同步代码块 用 synchronized 修饰代码段作为同步锁&#xff0c;代码如下&#xff1a; public class LockDemo {public Object object new Object();public void show(){synchronized (object) {System.out.println(">>>>>>hell…

java Spring aop多个增强类作用于同一个方法时,设置优先级

我们先来模拟这种情况 我们先创建一个java项目 然后 引入Spring aop需要的基本依赖 然后 在src下创建一个包 我这里叫 Aop 在Aop包下创建一个类 叫 User 参考代码如下 package Aop;import org.springframework.stereotype.Component;Component public class User {public vo…

Java-形参与返回值

Java学习之道-1 一、形参与返回值 平时在进行代码编写的时候大多都是以变量作为形参或者以某种数据类型比如int、String或者Boolean等等作为返回值&#xff0c;本次主要介绍以下三种作为形参与返回值的情况 1、类名作为形参与返回值 类名&#xff0c;顾名思义是定义的class类&a…

国家级高新区企业主要经济指标(2012-2021年)

数据来源&#xff1a;国家统计局 时间跨度&#xff1a;2012-2021 区域范围&#xff1a;全国&#xff08;及各分类统计指标&#xff09; 指标说明&#xff1a;手工提取最新的中国统计年鉴数据中各个excel指标表&#xff0c;形成各个指标文件的多年度数据&#xff0c;便于多年…

物联网发展的重要通信技术Wi-Fi

Wi-Fi 可以适应各种场景的联网需求 Wi-Fi 在实现物联网创新方面发挥了基础性作用&#xff0c;提供了广泛的连接性&#xff0c;将各种“事物”相互连接、连接到互联网&#xff0c;以及连接到全球使用的 180 亿台 Wi-Fi 设备。物联网的经济潜力是无限的&#xff0c;Wi-Fi 为智能…

Spring aop之针对注解

前言 接触过Spring的都知道&#xff0c;aop是其中重要的特性之一。笔者在开发做项目中&#xff0c;aop更多地是要和注解搭配&#xff1a;在某些方法上加上自定义注解&#xff0c;然后要对这些方法进行增强(很少用execution指定&#xff0c;哪些包下的哪些方法要增强)。那这时就…

每日一题——L1-069 胎压监测(15)

L1-069 胎压监测 分数 15 小轿车中有一个系统随时监测四个车轮的胎压&#xff0c;如果四轮胎压不是很平衡&#xff0c;则可能对行车造成严重的影响。 让我们把四个车轮 —— 左前轮、右前轮、右后轮、左后轮 —— 顺次编号为 1、2、3、4。本题就请你编写一个监测程序&#…

Windows 10/11如何恢复已删除的照片?

如果你想在Windows 11或Windows 10上恢复已删除的照片&#xff0c;你可以参考这篇文章&#xff0c;使用2种方法轻松恢复Windows上永久删除的照片。 可以恢复电脑上已删除的照片吗&#xff1f; 随着科技的发展&#xff0c;越来越多的用户习惯于在电子设备上存储照片。如果这些…

实时渲染为什么快,能不能局域网部署点量云

提到渲染很多有相关从业经验的人员可能会想起&#xff0c;自己曾经在电脑上渲染一个模型半天或者更长的 时间才能完成的经历。尤其是在项目比较着急的时候&#xff0c;这种煎熬更是难受。但现在随着实时渲染和云渲染行业的发展&#xff0c;通过很多方式可以提升渲染的时间和效率…

管理数据就这样轻松:TablePlus 5.3.1Crack

数据库管理变得简单 适用于关系数据库的现代、原生且友好的 GUI 工具&#xff1a;MySQL、PostgreSQL、SQLite 等 支持一整套关系数据库&#xff08;和一些 NoSQL&#xff09; 数据库MySQL红移数据库服务器SQLite数据库雷迪斯卡桑德拉蟑螂数据库数据库垂直 我们的客户来自世界上…

数据结构(四):树、二叉树、二叉搜索树

数据结构&#xff08;四&#xff09;一、树1.树结构2.树的常用术语二、二叉树1.什么是二叉树2.二叉树的数据存储&#xff08;1&#xff09;使用数组存储&#xff08;2&#xff09;使用链表存储三、二叉搜索树1.这是什么东西2.封装二叉搜索树&#xff1a;结构搭建3. insert插入节…

分析| 2023年移动开发平台的发展空间

春节过后返工已经过月&#xff0c;许多移动开发领域的企业都在忙着做技术调研与选型。在此之前&#xff0c;不如先回顾一下2022年的市场趋势&#xff0c;再结合好的移动开发平台的标准&#xff0c;从中窥见2023年的发展前景。 Gartner十大战略技术趋势 全球权威咨询机构Gartne…

ChatGPT写程序如何?

前言ChatGPT最近挺火的&#xff0c;据说还能写程序&#xff0c;感到有些惊讶。于是在使用ChatGPT有一周左右后&#xff0c;分享一下用它写程序的效果如何。1、对于矩阵&#xff0c;把减法操作转换加法&#xff1f;感觉不错的&#xff0c;能清晰介绍原理&#xff0c;然后写示例程…

运动健身用什么耳机好、最健身使用的耳机推荐清单

健身锻炼已经趋向于“国民运动”了&#xff0c;大家都喜欢一边听歌一边挥洒汗水&#xff0c;但是运动时戴的耳机也是有学问在里边的&#xff0c;需要满足佩戴牢固、防水防汗的基本需求&#xff0c;并且&#xff0c;根据每个人运动偏好的不同选择倾向也不同&#xff0c;在这里我…

HDLC简介及相应hdlc实训

HDLC简介 HDLC 协议 高级数据链路控制&#xff08;HDLC&#xff0c;High-level Data Link Control&#xff09;是一种面向比特的链路层协议&#xff0c; 其最大特点是对任何一种比特流&#xff0c;均可以实现透明的传输。HDLC协议具有以下优点。 透明传输&#xff1a;HDLC不…

动漫插画培训班有哪些

动漫培训班有哪些&#xff0c;今天给大家带来的是国内专业的动漫培训机构排名&#xff0c;这5个动漫培训机构&#xff0c;相信你一定都知道&#xff0c;快来看看吧&#xff01; 一&#xff1a;动漫培训机构排名 1、轻微课 轻微课是国内人气很高的板绘学习平台&#xff0c;主打课…

经典文献阅读之--VoxelMap(体素激光里程计)

0. 简介 作为激光里程计&#xff0c;常用的方法一般是特征点法或者体素法&#xff0c;最近Mars实验室发表了一篇文章《Efficient and Probabilistic Adaptive Voxel Mapping for Accurate Online LiDAR Odometry》&#xff0c;同时还开源了代码在Github上。文中为雷达里程计提…

基于机器学习的异常检测与分析技术

传统的运维方式在监控、问题发现、告警以及故障处理等各个环节均存在明显不足&#xff0c;需要大量依赖人的经验&#xff0c;在数据采集、异常诊断分析、故障处理的效率等方面有待提高。 本关键技术面对传统运维故障处理效率低、问题定位不准确、人力成本高三大痛点&#xff0…