Redis主从,缓存击穿,雪崩,哨兵等问题

Redis的性能管理:

Redis的数据缓存在内存当中

INFO memory

used_memory:853808

Redis中数据占用的内存

used_memory_rss:3715072

Redis向操作系统申请的内容

used_memory_peak:853808

Redis使用的内存的峰值

系统巡检:硬件巡检,数据库,Nginx,Redis,docker,k8s

内存碎片率:used_memory_rss/used_memory

系统已经分配给了Redis,但是Redis未能够有效利用的内存

allocator_frag_ratio:1.26

分配碎片的比例,Redis主进程调度时产生的内存,比例越小越好,值越高,内存的浪费越多

allocator_rss_ratio:6.02

分配占用物理内存的比例,告诉你主进程调度执行时占用了多少物理内存

rss_overhead_ratio:0.43

Rss是向系统申请的内存空间,Redis占用物理空间额外的开销比例,比例越低越好,Redis实际占用的内存和向系统申请的内存越接近,额外的开销越低

mem_fragmentation_ratio:4.69

内存碎片的比例,越低越好,内存的使用率越高

自动清理内存碎片:

vim /etc/redis/6379.conf

最后一行添加

activedefrag yes

手动碎片清理:

redis-cli memory purge

设置Redis的最大内存阀值:

vim /etc/redis/6379.conf

一旦达到设置的阀值,自动清理碎片,开启key的回收机制

Key回收的策略:

vim /etc/redis/6379.conf

599行添加:

maxmemory-policy volatile-lru:使用Redis内置lRU算法,把已经过期的键值对中淘汰数据,移除最近最少使用键值对(针对已经设置了过期时间的键值对)

maxmemory-policy volatile-ttl:已经设置了过期时间的键值对,从当中挑选一个即将过期的键值对(针对设置过期的键值对)

maxmemory-policy volatile-random:从已经设置了过期时间的键值对当中,挑选数据随机淘汰键值对(对设置了过期时间的键值对进行随机移除)

allkeys-lru:LRU算法当中,对所有的键值对进行淘汰,移除最少使用的键值对(针对所有的键值对)

allkeys-random:从所有键值对当中任意选择数据进行淘汰(没人用)

maxmemory-policy noeviction:禁止键值对回收,(不删除任何键值对,直到Redis把内存写满为止)

思考题:

Redis占用内存的效率问题,如何解决

  1. 日常巡检当中,对Redis的占用情况监控
  2. 设置Redis占用系统的阀值,避免占用系统的全部内存
  3. 内存碎片清理,手动,自动
  4. 配置合适的key回收机制

Redis的故障报错问题:

Redis雪崩:

缓存雪崩:大量的应用请求无法在Redis缓存当中处理,请求全部发送到后台数据库,数据库的并发能力本身就很差,一旦高并发,数据库就会很快崩溃

雪崩出现的原因:

Redis集群大面积故障

Redis缓存中,大量的数据同时过期,大量的请求无法得到处理

Redis实例宕机

解决雪崩方法:

事前:高可用架构,防止整个缓存故障,主从复制和哨兵模式,Redis集群

事中:在国内用的比较多的方式:HySTRIX,熔断,降级,限流用这三个手段来降低雪崩发生之后的损失,数据库不急即可,但是很慢,不能没有反应,类似于春运期间的12306

事后:Redis备份,快速缓存预热

Redis的缓存击穿:

缓存击穿主要是热点数据缓存过期,或者被删除,多个请求并发访问热点数据,请求也是转发到数据库了,导致数据库的性能下降,经常被请求的缓存数据,最好设置为永不过期

键值对还在,但是值被替换了,原有的请求找不到之后,同时也会请求后台数据库,也是击穿类型的一种

Redis的缓存穿透:

缓存当中没有数据,数据库当中也没有对应数据,但是有用户一直发起这个都没有的请求,而且请求的数据格式很大,黑客在利用漏洞在攻击,压垮应用数据库

Redis的集群:

高可用方案:

  1. 持久化
  2. 高可用 主从复制 哨兵模式 集群

主从复制:

主从复制是Redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础上实现高可用,主从复制实现数据的多机备份,以及读写分离(主服务器负责写,从服务器只能读)

缺陷:主从复制故障之后无法自动恢复,需要人工干预,写操作的负载均衡

主从复制的工作原理:

1.主节点(MAster)从节点(slave)组成,数据复制是单向的,只能从主节点到从节点

核心图:

实现主从复制:

20.0.0.51主

20.0.0.52 从1

20.0.0.53 从2

主:

vim /etc/redis/6379.conf

监听地址噶为0.0.0.0

然后

重启服务

从1

打开AOF

指向主:

从节点直接自动变成只读模式

然后

/etc/init.d/redis_6379 restart

从2

/etc/init.d/redis_6379 restart

验证效果,看日志

tail -f /var/log/redis_6379.log

主从复制搭建完成

三台Redis登录Redis验证效果

验证主从复制,

验证只读模式

Set失败,只有主节点可以写,从节点写失败

查看主从策略

redis-cli info replication

从策略查看

redis-cli info replication

当从1或从2停机一台服务,不影响主从复制功能,而且服务打开后,照样同步

哨兵模式:

先有主从,再有哨兵

在主从复制的基础上,实现主节点故障的自动切换

哨兵模式原理:

哨兵:是一个分布式系统,用于分布式系统,用于在主从结构之间,对每台Redis的服务器进行监控,主节点出现故障时,从节点通过投票的方式选择一个新的master

哨兵模式需要事少三个节点服务器

哨兵模式的结构:

哨兵节点:监控(监控的是Redis节点,不是监控哨兵),不存储数据

数据节点:主节点和从节点都是数据节点

核心图:

演示哨兵模式:

取消注释,取消保护模式

哨兵模式端口

哨兵模式后台运行

日志文件运行打开

指定工作目录

指定初识的主服务器

2表示至少需要两台服务器认为主已经下线,才会进行主从切换

最小时间限制,30秒后就认为已挂,主官认为已挂

最大时间限制

先启主节点,再起从节点,先器master,再起sentinel

启动哨兵

查看整个集群的哨兵情况

查看日志

模拟故障切换(有延时),当再次改完配置文件还是无法启动,记得杀一下进程

关闭服务

看日志看主从情况,哨兵情况

哨兵模式投票选举出新的主之后,原主配置文件自动修改,自动指向新的祝

新的主配置文件,也会修改,原本的从指向消失

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图像分类原理

一、什么是图像分类(Image Classification) 图像分类任务是计算机视觉中的核心任务,其目标是根据图像信息中所反映的不同特征,把不同类别的图像区分开来。 二、图像分类任务的特点 对于人来说,完成上述的图像分类任务简直轻而易举&#xf…

YOLOV5标注训练自己的数据全流程教程

概述 yolo在目标检测领域是非常有代表性的模型,它速度快识别效果也很精准,是实时检测模型中应用最广泛的。yolo的原理和代码是很容易获得的,且有各式各样的教程,但是模型怎么使用的教程相对比较少。本文讲解如何使用yolov5模型训…

java.lang.IllegalStateException: Can not add resource

安卓解决 java.lang.IllegalStateException: Can not add resource 放两个链接 解决Can not add resource (com.android.aaptcompiler.ParsedResourcea980fbb) to table_言并肃的博客-CSDN博客 android attr何时会冲突_android attr冲突-CSDN博客 然后去新增的依赖找资源…

详解——菱形继承及菱形虚拟继承

目录 一,菱形继承 1.1单继承 1.2多继承 1.3菱形继承 1.4菱形继承的问题 1.5虚拟继承解决数据冗余和二义性的原理 二.继承的总结和反思 一,菱形继承 C三大特性——继承-CSDN博客 1.1单继承 单继承:一个子类只有一个直接父类时称这个继…

合伙人注册即得/创业平台扶持!

问心一语持续体验中~ 与公司签订线下(线上)纸质合伙人代理合同,具备法律效力。 一级直推、非一级直推注册即得奖励。(消耗完毕被邀请用户赠送的AI免费使用条数) 即:邀请1人注册即得并消耗!只需注册无需充值&#xff…

2023年度openGauss标杆应用实践案例征集

标杆应用实践案例征集 2023 openGauss 数据库作为企业IT系统的核心组成部分,是数字基础设施建设的关键,是实现数据安全稳定的保障。openGauss顺应开源发展趋势,强化核心技术突破,着力打造自主根社区,携手产业伙伴共同…

单片机语音芯片开发要解决的问题

在单片机语音芯片开发过程中,可能会遇到多种问题,这些问题可能来自于技术层面,也可能来自于芯片本身的设计和应用层面。下面让我们具体从芯片的功耗、语音识别的准度、芯片的尺寸和芯片的可靠性四个方面开展讨论。 1.芯片的功耗问题 首先&a…

干货分享 | 一分钟带你了解TSMaster小程序编辑代码智能提示功能

本文给大家带来TSMaster小程序编辑的新功能,其中主要包含:代码编辑智能提示功能、可用外部代码编辑器编辑小程序代码并同步。 本文关键字:C小程序、Python小程序、代码智能提示、外部代码编辑器、Visual Studio 目录/Catalog ● TSMaster的…

【网络】数据链路层协议

数据链路层协议 一、链路层解决的问题二、以太网协议1、局域网技术2、令牌环网(了解)3、以太网通信原理4、 MAC地址5、以太网帧格式6、碰撞避免7、最大传输单元MTU 二、ARP协议1、ARP数据的格式2、ARP协议的工作流程3、ARP缓存表4、ARP协议中的一些问题7…

Python基础【二】--基本语句【2023.11.22】

1.条件语句 在进行逻辑判断时,我们需要用到条件语句,Python 提供了 if、elif、else 来进行逻辑判断。格式如下所示: if 判断条件1:执行语句1... elif 判断条件2:执行语句2... elif 判断条件3:执行语句3... else:执行语句4...ainput("请输…

软件包管理器yum和git

目录 一、Linux软件包管理器yum 1、Linux下的软件安装方法 2、了解yum 1、实际例子引入 2、yum 3、查找软件包 4、安装软件包 5、卸载软件 二、git 一、Linux软件包管理器yum 1、Linux下的软件安装方法 1、在Linux下安装软件,一个通常的办法是下载到程序的源…

让SOLIDWORKS Composer动画在PPT中随意转换

SOLIDWORKS Composer作为一款易学易用的技术图解软件,非常适合用来给客户展示自己的产品。这里我们教大家如何将Composer文件插入大PPT中,并任意切换文件,用以给客户展示不用的方案和产品。 1.首先大家要安装SOLIDWORKS Composer Player 这个…

【c语言】重温一下动态内存,int数组过大会造成栈错误

项目场景: 项目场景:互助群同学在刷题的过程中,遇到的一个题目,需要申请一个很大数组,于是这个同学就写了int[1000000],其实这样写也没有错,可是运行后却显示栈错误。于是就找到我来请教,我想就…

ConcurrentHashMap的数据结构+以及各个版本之间的区别

ConcurrentHashMap 1.7与1.8的区别 1、锁结构不同 2、put的流程不同 3、size的计算方式不同(1.8使用的使用basecell[]计算,有点类似于LongAdder,1.7使用三级通缉判断是否一样,不一样通过分段式加锁再求和) 4、数据结构不同,1.6 Re…

【HMS Core】应用内支付问题总结

【问题描述1】 集成应用内支付,怎么让微信或者支付宝的选项位于华为支付之前。 【解决方案】 目前不能调整顺序的。 【问题描述2】 用户手机上的价格,是按照什么货币单位显示的? 【解决方案】 手机客户端根据当前华为帐号所属的服务地&a…

Dropout 作用

一、 前言 Dropout出现的原因 训练深度神经网络的时候,总是会遇到两大问题:(1)容易过拟合(2)网络费时 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出…

自学成为android framework高手需要准备哪些装备-千里马车载车机系统开发学习

背景 hi,粉丝朋友们: 大家好!经常有很多学员买课同学都会问到需要准备哪些装备,我也回答了很多学员了,今天就搞一篇文章来统一说明一下,告诉一下大家如果你想从一个framework新手变成一个framework开发的高…

在SOLIDWORKS中如何提升保存PDF版本文件的清晰度

随着Solidworks年复一年的不断更新,不仅仅是整个软件的性能上的提升,其在输出文件的功能上也同样在精益求精。 但对于老版本的使用者和希望能让输出文件清晰度更进一步的使用者而言,可能目前我们所能达到的普通文件输出清晰度远远无法达到他们…

java jdk 版本切换

java jdk 版本切换 1.JAVA8_HOME ,JAVA17_HOME为切换的两个版,JAVA_HOME来选择 2.path中java_home配置项置顶,必须在蓝色选择中框上方,它是电脑自带的配置,位置太靠上会把我们自己的配置给覆盖掉 3.java -version 查看切换结果

SpringCache使用详解

SpringCache 1.新建测试项目SpringCache2.SpringCache整合redis2.1.Cacheable2.2.CacheEvict2.3.Cacheput2.4.Caching2.5.CacheConfig 3.SpringCache问题4.SpringCache实现多级缓存 1.新建测试项目SpringCache 引入依赖 <dependencies><dependency><groupId&g…