redis的性能管理及集群架构(主从复制、哨兵模式)

一、redis的性能管理

1、内存指标info memory

内存指标(重要)

used_memory:853736

数据占用的内存

used_memory_rss:10551296

redis向操作系统申请的内存

used_memory_peak:853736

redis使用内存的峰值

注:单位:字节

系统巡检:硬件巡检、数据库、中间件(nginx、redis)、docker、k8s

2内存碎片率

(1)定义:系统已分配给redis,但reids未能有效利用的内存

(2)计算格式:内存碎片率=used_memory_rss/used_memory

(3)监控指标redis-cli info memory|grep ratio(生产环境常用)

监控指标

定义

allocator_frag_ratio:1.29

分配器碎片的比例

(越小越好,值越高,内存浪费越多)

redis主进程调度时产生的内存

allocator_rss_ratio:5.49

分配器占用物理内存的比例

主进程调度时占用的物理内存

rss_overhead_ratio:1.38

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

RSS是redis向系统申请的内存空间

mem_fragmentation_ratio:15.59

内存碎片率

(越低越好,内存使用率越高)

3、清理内存的两种方式

(1)自动清理碎片vim /etc/redis/6379.conf

末尾添加activedefrag yes自动清理碎片的配置

2手动清理碎片redis-cli memory purge

4、设置redis的最大内存阀值

(在工作中一定要设置redis的占用内存阈值。若不设置阈值,会塞满内存,直到炸)

(1)先设置最大内存阀值vim /etc/redis/6379.conf

添加maxmemory 1gb

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

(2)再开启key的回收机制

key的回收机制

maxmemory-policy volatile-lru

(常用)

使用redis内置的lru算法,在已设置过期时间的键值对中淘汰数据中,移除最近最少使用的键值对

maxmemory-policy volatile-ttl

(常用)

使用redis内置的ttl算法,在已设置过期时间的键值对中挑选一个即将过期的键值对

maxmemory-policy volatile-random

(少用)

在已设置过期时间的键值对中,挑选数据,随机淘汰键值对

注:以上算法只针对已设置过期时间的键值对,永不过期的不在此范围内

allkeys-lru

使用redis内置的lru算法,对所有的键值对进行淘汰,移除最少使用的键值对

allkeys-random

(更少用)

在所有键值对中任意选择数据进行淘汰

注:以上算法针对所有的键值对,无论是否设置过期时间

maxmemory-policy noeviction

(最常用)

禁止键值对回收(不删除任何键值对,直到redis把内存塞满,写满报错为止)

【面试题】redis占用内存的效率问题如何解决?(经验)

①日常巡检中,监控redis的占用情况

②设置redis占用系统内存的阀值,避免占用系统全部内存

③手动/自动清理内存碎片

④配置合适的key回收机制

5redis雪崩(缓存雪崩)(少见)

(1)定义

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

(2)产生雪崩的原因

①redis集群大面积故障

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

③redis实例宕机

(3)解决雪崩的方式

①事前预防:采用高可用架构(主从复制、哨兵模式、redis集群),防止整个缓存故障

②事中处理(开发):在国内通用方式——HySTRIX(熔断、降级、限流),降低雪崩发生后的损失,确保数据库不死,可以慢,但不能没有响应

③事后解决:以redis备份的方式恢复数据(运维)或快速缓存预热(开发)

6、redis的缓存击穿(重点)

(1)产生原因

①热点数据缓存过期或被删除,当多个请求并发访问热点数据时,请求转发到数据库,导致数据库性能快速下降。经常被请求的缓存数据最好设置为永不过期

②键值对还在,但值被替换,原有的请求找不到之后,同样会请求后台数据库,导致数据库性能快速下降

(2)解决方式

①热点数据设置成永不过期

②恢复原有的值

7、redis的缓存穿透(恶意攻击)(很少见)

(1)定义

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

(2)解决方式:专门的安全人员处理

redis的集群架构

1、高可用方案

(1)主从复制

(2)哨兵模式

(3)redis集群

2、主从复制

(1)主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础上实现高可用

(2)主从复制实现数据的多机备份和读写分离(主服务器——写,从服务器——读)

缺点:故障无法自动恢复,需人工干预,无法实现写操作的负载均衡

3、主从复制的工作原理

由主节点master和从节点slave组成,数据复制是单向的,只能从主节点到从节点

4、哨兵模式

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

(1)哨兵模式定义

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

哨兵模式也需要至少三个节点

(2)哨兵模式的结构

①哨兵节点:监控主、从节点,不存储数据

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

(哨兵1监控从1,从2节点;哨兵2监控主节点,从2 节点;哨兵3监控主节点,从1节点)

(2)哨兵模式工作原理

每个哨兵节点每隔一秒,通过ping命令方式,检测主、从之间的心跳线,主节点在一定时间内没有回复或回复了错误消息,这个时候哨兵会主观认为主节点下线了;超过半数的哨兵节点认为主节点下线了,这个时候才会认为主节点是客观下线

故障恢复可能会有延迟,因为有一个选举过程

(4)如何选举新的主节点

哨兵节点通过raft算法(选举算法),每个节点共同投票选举出一个新的master,然后新的master实现主节点的转移和故障恢复通知

(5)主节点的选举过程

①已下线的从节点不会被选为主节点

②选择配置文件中从节点优先级最高的replica-priority 100

③自动选择一个复制数据最完整的从节点

三、主从复制+哨兵模式实验

基于主从复制做哨兵模式实验

实验目的:解决redis单节点故障问题

实验条件:

IP地址

作用

组件

20.0.0.14

主服务器

redis服务

20.0.0.24

从服务器1

redis服务

20.0.0.34

从服务器2

redis服务

实验步骤:

1、主从复制实验

(1)配置主服务器

(2)配置从服务器

从1

从2

replicaof 20.0.0.14 6379表示只读(20.0.0.14是主服务器的IP地址)

主从复制完成

(3)测试

2、哨兵模式实验

(1)配置主服务器

这个2:一般设置成集群的一半

最小切换时间30秒

最大切换时间180秒

(2)配置从服务器

从1

从2(与从1同样的配置)

(3)启动主从服务器(先启动主再启动从)

redis-sentinel sentinel.conf &

监控哨兵集群的信息redis-cli -p 26379 info Sentinel

哨兵模式搭建完毕

查看从节点信息tail -f /var/log/sentinel.log

(4)故障切换

模拟故障

看日志是否主从切换,有延迟

tail -f /var/log/sentinel.log

目前,新主的IP地址是20.0.0.34

(5)测试

①测试新主能不能写

恢复原主

②测试原主能否继续写

不能

原因:配置文件/etc/redis/6379.conf发生变化

原主(现从2)

从1

原从2(新主)

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

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

相关文章

策略模式应用(内窥镜项目播放不同种类的视频)

新旧代码对比 策略模式 基本概念 策略模式是一种行为设计模式,它定义了一系列算法,将每个算法封装起来,并且使它们可以互相替换。策略模式允许客户端选择算法的具体实现,而不必改变客户端的代码。这样,客户端代码就…

中国区域250米归一化植被指数数据集(2000-2022)

中国区域250米归一化植被指数数据集(2000-2022)数据集是中国区域2000至2022年月度归一化植被指数产品,空间分辨率250米,合成方式采用月最大值合成,每年12期,共275期。本产品是基于Aqua/Terra-MODIS卫星传感器MOD13Q1产品以及土地利…

寄存器、缓存、内存之间的关系和区别

https://blog.csdn.net/m0_46761060/article/details/124689209 目录 关系1、寄存器2、缓存(Cache) 2.1、寄存器和缓存的区别2.2、一级缓存和二级缓存3、内存 3.1、只读存储器 ROM(Read Only Memory)3.2、随机存储器 RAM&#xf…

基于LLM+场景识别+词槽实体抽取实现多轮问答

前言 随着人工智能技术的不断进步,大语言模型(LLM)已成为技术前沿的热点。它们不仅能够理解和生成文本,还能在多种应用场景中实现复杂的交互。本文将深入探讨一段结合了大语言模型能力、意图识别和词槽实体抽取的Python代码&…

链表OJ--上

文章目录 前言一、反转链表二、移除链表元素三、链表中倒数第K个结点四、相交链表五、链表的中间结点 前言 一、反转链表 力扣206:反转链表- - -点击此处传送 思路图: 方法一:改变指向 方法二: 代码: //方法一 /…

十一、h.264编码

前言 测试环境: ffmpeg的4.3.2自行编译版本windows环境qt5.12 使用H.264编码对YUV视频进行压缩 ffmpeg -s 640x480 -pix_fmt yuv420p -i in.yuv -c:v libx264 out.h264 -c:v libx264是指定使用libx264作为编码器完整代码: H264EncodeThread.h #ifnd…

用HALCON标定助手对相机进行标定

任务要求: 已知相机镜头焦距f为8mm,相机单个CCD像素在水平和竖直两个方向上的尺寸均为3.75微米,相机为普通透光镜头和面阵相机,对相机进行标定,测量相机的内外参数。 操作步骤: 1. 在HALCON中运行gen_ca…

C#使用whisper.net实现语音识别(语音转文本)

目录 介绍 效果 输出信息 项目 代码 下载 介绍 github地址:https://github.com/sandrohanea/whisper.net Whisper.net. Speech to text made simple using Whisper Models 模型下载地址:https://huggingface.co/sandrohanea/whisper.net/tree…

Nginx高级

Nginx高级 第一部分:扩容 通过扩容提升整体吞吐量 1.单机垂直扩容:硬件资源增加 云服务资源增加 整机:IBM、浪潮、DELL、HP等 CPU/主板:更新到主流 网卡:10G/40G网卡 磁盘:SAS(SCSI) HDD(机械…

如何使用ArcGIS Pro进行坐标转换

不同来源的数据坐标系可能是不同的,为了统一使用这些数据就需要进行坐标转换,ArcGIS Pro作为专业的GIS软件,坐标转换功能肯定也是包含的,这里为大家介绍一下ArcGIS Pro如何进行坐标转换,希望能对你有所帮助。 数据来源…

【Exception】npm ERR! code UNABLE_TO_GET_ISSUER_CERT_LOCALLY

Talk is cheap, show me the code. 环境 | Environment kversionOSwindows 11nodev18.14.2npm9.5.0 报错日志 | Error log >npm create vitelatest Need to install the following packages:create-vite5.0.0 Ok to proceed? (y) y npm ERR! code UNABLE_TO_GET_ISSUER_…

2023亚太杯数学建模B题思路+模型+代码+论文

2023亚太地区数学建模A题思路:开赛后第一时间更新,获取见文末 名片 2023亚太地区数学建模B题思路:开赛后第一时间更新,获取见文末 名片 2023亚太地区数学建模C题思路:开赛后第一时间更新,获取见文末 名片…

idea修改行号颜色

前言 i当idea用了深色主题后,发现行号根本看不清,或者很模糊 例如下面这样 修改行号颜色 在IntelliJ IDEA中,你可以根据自己的喜好和需求定制行号的颜色。下面是修改行号颜色的步骤: 打开 IntelliJ IDEA。 转到 “File”&…

ChatGPT规模化服务的经验与教训

2022年11月30日,OpenAI发布ChatGPT,以很多人未曾预料的速度迅速走红。与此同时,由于短时间内用户量的暴涨,导致服务器过载,迫使OpenAI停止新用户的注册。 ChatGPT发布这一年,同样的情景发生了好几次。在最近…

opencv-图像金字塔

图像金字塔是一种图像处理技术,它通过不断降低图像的分辨率,形成一系列图像。金字塔分为两种类型:高斯金字塔和拉普拉斯金字塔。 高斯金字塔(Gaussian Pyramid): 高斯金字塔是通过使用高斯滤波和降采样&a…

专业远程控制如何塑造安全体系?向日葵“全流程安全闭环”解析

安全是远程控制的重中之重,作为国民级远程控制品牌,向日葵远程控制就极为注重安全远控服务的塑造。近期向日葵发布了以安全和核心的新版“向日葵15”以及同步发布《贝锐向日葵远控安全标准白皮书》(下简称《白皮书》),…

使用微信小程序openMapApp接口,报错问题解决openMapApp:fail invaild coord

使用微信小程序的 openMapApp 接口时遇到了坐标无效的错误 (openMapApp:fail invalid coord)。这个错误通常是由于提供的地理坐标不符合预期的格式或范围而引起的: 坐标格式: 确保提供的坐标符合正确的格式。常见的格式是 "纬度,经度"&#xf…

【11月比赛合集】5场可报名的「创新应用」、「数据分析」和「程序设计」大奖赛,任君挑选!

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 创新应用赛(1场比赛)数据分析赛&#…

逸学java【初级菜鸟篇】9.3 Stream流

hi,我是逸尘,一起学java吧 得益于Lambda所带来的函数式编程,引入了一个全新的Stream流概念(就是都基本使用lambda的形式)。 流处理 我们首先理解什么是流处理,它类似于sql语句,可以执行非常复…

【开源】基于Vue和SpringBoot的智能教学资源库系统

项目编号: S 050 ,文末获取源码。 \color{red}{项目编号:S050,文末获取源码。} 项目编号:S050,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课…