redis之主从复制和哨兵模式

news2024/9/22 21:25:03

(一)redis的性能管理

1、redis的数据缓存在内存中

2、查看redis的性能:info memory(重点)

used_memory:904192(单位字节)

redis中数据占用的内存

used_memory_rss:10522624

redis向操作系统申请的内存

used_memory_peak:904192

redis使用内存的峰值

3、生产中的日常系统巡检:硬件巡检、数据库、nginx、redis、docker、k8s

4、redis的内存碎片率:used_memory_rss/used_memory(重点)

(1)内存碎片率:系统已经分配给了redis,但是redis未有效利用的内存
(2)查看内存碎片率:redis-cli info memory | grep ratio

allocator_frag_ratio:1.27

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

allocator_rss_ratio:5.24

分配器占用物理内存的比例,也就是主进程调度执行时占用了多少物理内存

rss_overhead_ratio:1.17

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

mem_fragmentation_ratio:12.49

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

(3)清理碎片
①自动清理(修改配置文件)——设置redis的最大内存阀值

设置redis的最大内存阀值:一旦到达阀值,自动清理碎片,开启key的回收机制

生产中一定要给redis设置阀值,不设置最大阀值,内存会直接爆满——重点

key回收的策略(重点)

maxmemory-policy volatile-lru

使用redis内置的LRU算法,把已经设置了过期时间的键值对进行淘汰数据,移除最近最少使用的键值对(针对已经设置了过期时间的键值对)

maxmemory-policy volatile-ttl

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

maxmemory-policy volatile-random

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

allkeys-lru

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

allkeys-random

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

maxmemory-policy noeviction

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

②手动清理:redis-cli memory purge

(4)redis占用内存的效率问题如何解决?
①日常巡检中,对redis的占用情况进行监控
②设置redis占用系统内存的阀值,避免占用系统全部内存
③内存碎片清理(手动、自动)
④配置适合的key回收机制

5、redis雪崩(少见)

(1)redis雪崩:缓存雪崩,是指大量的应用请求无法在redis缓存中处理,请求会全部发送到后台数据库,数据库的压力会激增,数据库并发能力本身就很差,一旦高并发,数据库会很快崩溃
(2)雪崩产生的原因:
①redis集群大面积故障
②redis缓存中,大量数据同时过期,大量的请求无法得到处理
③redis实例宕机
(3)解决方案
①事前:高可用架构,防止整个缓存故障,主从复制、哨兵模式和redis集群
②事中:在国内的通用方式:HySTRIX,熔断、降级、限流三个手段来降低雪崩发生之后的损失,数据库不死即可,可以慢,但是不能没有响应(开发做)
③事后:redis备份,快速缓存预热(开发做)

6、redis的缓存击穿(常见)

(1)原因:热点数据缓存过期或者被删除,多个请求并发访问热点数据,请求转发到后台
数据库,导致数据库的性能快速下降
(2)键值对还在,但值被替换,原有的请求找不到之后,同样请求后台数据库
*经常被请求的缓存数据,最好设置为永不过期

7、redis的缓存穿透(少见)

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

(九)redis的集群架构(高可用)

1、高可用方案:主从复制、哨兵模式、集群

(十)redis之主从复制

1、主从复制

(1)是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础上实现高可用
(2)实现数据的多机备份,以及读写分离(主服务器负责写,从服务器只能读,设置了从默认是只读模式)
(3)缺点:故障无法恢复,需要人工干预,写操作无法实现负载均衡
(4)主从复制需要至少3个节点

2、主从复制的工作原理

(1)主节点(master)、从节点(slave),数据的复制是单向的,只能从主节点到从节点

3、主从复制的工作机制

4、主从复制的架构
(1)20.0.0.41:master
(2)20.0.0.42:slave1
(3)20.0.0.43:slave3

5、实验过程

(1)配置主节点

(2)配置从服务器

(3)测试

(二)哨兵模式(先有主从、再有哨兵)

1、哨兵模式

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

2、哨兵模式的原理

(1)哨兵:分布式系统,部署在每一个redis节点上,用于在主从结构之间,对每台redis的服务进行监控
(2)主节点出现故障时,从节点通过投票的方式选择一个新的master
(3)哨兵模式需要至少3个节点

3、哨兵模式的结构

(1)哨兵节点:监控节点,不存储数据
(2)数据节点:主节点和从节点

4、哨兵模式的工作机制

(1)哨兵模式的原理:每一个哨兵节点每隔一秒,通过ping命令方式,检测主、从之间的心跳线。主节点在一定时间内没有回复或者回复了错误的消息,这个时候,哨兵就会主观的认为主节点下线了,超过半数的哨兵节点认为主节点下线了,这个时候才会认为主节点是客观下线
(2)哨兵节点通过raft算法(选举算法),每个节点共同投票选举出一个新的master,然后新的master实现主节点转移和故障恢复通知
(3)主节点的选举过程
①已经下线的从节点不会被选为主节点
②选择配置文件当中,从节点优先级最高的replica-priority 100
③选择一个复制数据最完整的从节点

5、实验过程

(1)配置主节点

(2)配置从服务器

起服务:先起master,再起slave:redis-sentinel sentinel.conf &

(3)监控哨兵集群的信息

(4)故障切换(有延迟)

(5)故障恢复

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

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

相关文章

锯木棍

题目描述 有一根粗细均匀长度为 L 的木棍,先用红颜色刻度线将它 m 等分,再用蓝色刻度线将 其 n 等分( m>n ),然后按所有刻度线将该木棍锯成小段,计算并输出长度最长的木棍的长度和根数。 输入格式…

(内部资料)收下这几个人工智能学习秘籍!

秘籍一:练好基本功 学习基础知识:人工智能涉及多个学科领域,包括数学、计算机科学、统计学等。因此,学习基础知识是非常重要的。您可以通过学习线性代数、概率论和微积分等数学基础知识,以及掌握Python编程语言和常用…

Linux学习笔记-Ubuntu下使用Crontab设置定时任务

文章目录 一、概述二、基于crontab的设置2.1 基本命令说明2.2 使用-e指令编辑命令2.2.1 进入编辑模式2.2.2 指令信息格式2.2.4 开启日志1) 修改rsyslog配置文件2) 重启rsyslog3) 查看日志 2.2.3 设置后之后重启服务 三、示例3.1 每隔一分钟往文件中日期3.2 使用-l查看任务列表3…

微软重磅发布4个适合初学者的机器学习资料

自媒体火起来后,很多科技大佬都开始写博客,录视频了,大佬一入行,整个行业卷上天,像我这样的也只能走资源整合之路了,不过这样也好,科技进步,人类发展需要他们。 除了个人&#xff0…

深度学习常见激活函数:ReLU,sigmoid,Tanh,softmax,Leaky ReLU,PReLU,ELU整理集合,应用场景

文章目录 1、ReLU 函数(隐藏层中是一个常用的默认选择)1.1 优点1.2 缺点 2、sigmoid 函数2.1 优点2.2 缺点 3、Tanh 函数3.1 优点3.2 缺点 4、softmax 函数(多分类任务最后一层都会使用)5、Leaky ReLU 函数5.1 优点5.2 缺点 6、PR…

KDE 项目发布了 KDE Gear 23.08.3

导读KDE 项目发布了 KDE Gear 23.08.3,作为最新的 KDE Gear 23.08 开源集合的第三次维护更新,该集合包含了用于 KDE Plasma 桌面环境和其他平台的 KDE 应用程序。 KDE Gear 23.08.3 是在 KDE Gear 23.08.2 大约一个月之后发布的,包含了更多对…

Maven中常用命令以及idea中使用maven指南

文章目录 Maven 常用命令compiletestcleanpackageinstallMaven 指令的生命周期maven 的概念模型 idea 开发maven 项目idea 的maven 配置idea 中创建一个maven 的web 工程在pom.xml 文件添加坐标坐标的来源方式依赖范围编写servlet maven 工程运行调试 Maven 常用命令 compile …

阿里云高效计划学生和老师免费代金券申请认证方法

阿里云高校计划学生和教师均可参与,完成学生认证和教师验证后学生可以免费领取300元无门槛代金券和3折优惠折扣,适用于云服务器等全量公共云产品,订单原价金额封顶5000元/年,阿里云百科aliyunbaike.com分享阿里云高校计划入口及学…

掌握技术访谈:CNN、Seq2Seq、Faster R-CNN 和 PPO — 揭开卓越编码和创新之路

一、说明 本文 揭开CNN、Seq2Seq、Faster R-CNN 和 PPO — 编码和创新之路。对于此类编程的短小示例,用于开发时临时参考。 二、数据准备 问题陈述:在本次挑战中,您将深入计算机视觉世界并使用卷积神经网络 (CNN) 解决图像分类任务。您将使用…

Figma最全面的新手指南,从基础到高级,一网打尽

1 Figma界面介绍 Figma基础界面与传统设计软件没有太大区别,有Sketch使用经验的用户几乎可以无缝连接到Figma。 立即体验 免费的在线Figma汉化版即时设计是一款支持在线协作的专业级 UI 设计工具,支持 Sketch、Figma、XD 格式导入,海量优质设…

4.2V升多串LED驱动升压6V9V12V恒流点灯

4.2V升多串LED驱动升压6V9V12V恒流点灯 探索WT7012,这款引领潮流的升压转换器,其强大功能将彻底改变您的LED驱动格局。可以轻松驾驭多达7串白光LED,展现出无与伦比的驱动能力。 无论是单节锂电池还是多节锂电池供电产品,宽电压3…

Centos8上部署MySQL主从备份

虚拟机环境如下: Node1192.168.1.110Centos8 Node2192.168.1.111Centos8 1.在Node1和Node2上安装数据库; yum install -y mysql* 2.关闭防火墙服务,关闭开启自启; systemctl stop firewalld systemctl disable firewall…

人工智能中的文本分类:技术突破与实战指导

在本文中,我们全面探讨了文本分类技术的发展历程、基本原理、关键技术、深度学习的应用,以及从RNN到Transformer的技术演进。文章详细介绍了各种模型的原理和实战应用,旨在提供对文本分类技术深入理解的全面视角。 关注TechLead,分…

使用内网穿透工具实现远程访问本地部署的Odoo企业管理系统

文章目录 前言1. 下载安装Odoo:2. 实现公网访问Odoo本地系统:3. 固定域名访问Odoo本地系统 前言 Odoo是全球流行的开源企业管理套件,是一个一站式全功能ERP及电商平台。 开源性质:Odoo是一个开源的ERP软件,这意味着企…

【高性能计算】CUDA,OpenCL,FPGA 加速,MPI

OpenCL OpenCL(Open Computing Language)是一种跨平台的GPU加速技术,由Khronos Group开发。OpenCL允许开发人员在不同的硬件平台上编写并行计算应用程序。 OpenCL使用C语言的子集来编写应用程序,并提供了一组API,可以…

一文带你快速了解Python史上最快Web框架

文章目录 1. 写在前面2. Sanic框架简介2.1 背景2.2 特征与优势 3. Sanic框架实战3.1. 安装Sanic3.2. Demo案例编写 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&a…

C#中的var究竟是强类型还是弱类型?

前言 在C#中,var关键字是用来声明变量类型的,它是C# 3.0推出的新特征,它允许编译器根据初始化表达式推断变量类型,有点跟javascript类似,而javascript中的var是弱类型。它让C#变量声明更加简洁,但也导致了…

2023年中国合成云母行业现状及市场格局分析[图]

合成云母是一种通过化工原料经高温熔融冷却析晶而制得的单斜晶系矿物,属于典型的层状硅酸盐,许多性能都优于天然云母,如合成云母的耐温高达1200℃以上,而天然白云母在550℃下就会开始分解,金云母则在800℃开始分解。除…

SpringBoot Admin

前言 Spring Boot Admin 是一个管理和监控 Spring Boot 应用程序的开源项目,它提供了一个简洁的 Web 界面来监控 Spring Boot 应用程序的状态和各种运行时指标。Spring Boot Admin 可以帮助开发者快速了解应用程序的状态,并快速定位错误或性能问题。下面…

kettle spoon连接MySQL8.0数据库报错解决方法

kettle 连接 mysql 8.0报错,显示无法连接到数据库服务 错误连接数据库 [11] : org.pentaho.di.core.exception.KettleDatabaseException: Error occurred while trying to connect to the databaseError connecting to database: (using class org.gjt.mm.mysql.D…