redis的高可用(主从复制和哨兵模式)

redis的高可用(主从复制和哨兵模式

redis的性能管理:redis的数据缓存在内存当中

INFO memory:查看redis内存使用情况

used_memory:1800800:redis中数据占用的内存

used_memory_rss:5783552:redis向操作系统申请的内存

used_memory_peak:1800800:redis使用内存的峰值

系统巡检:硬件巡检,数据库,nginx,redis,docker,k8s

redis-cli info memory | grep ratio:过滤内存碎片

内存碎片率:used_memory_rss/used_memory

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

allocator_frag ratio:1.19

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

allocator_rss_ratio:7.15

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

rss_overhead_ratio:0.31

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

mem_fragmentation_ratio:3.33

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

碎片可以自动清理(手动清理redis-cli memory purge和自动清理在配置文件redis最后一行添加activedefrag yes)

设置redis的最大内存阀值:(在/etc/redis/6379.conf中568行maxmemory 1gb)

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

key回收的策略:(要先设置上面的阀值

配置文件redis/5379.conf,598行增加

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

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

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

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

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

maxmemory-policy noeviction:禁止键值对回收(不擅长任何键值对,直到redis把内存塞满,写不了,报错为止)

在工作当中,一定要给redis占用内存设置阀值

面试题:

redis占用的内存的效率问题如何解决?

1、日常巡检当中,对redis的占用情况做监控

2、设置redis占用系统内存的阀值(在/etc/redis/6379.conf中568行maxmemory 1gb),避免占用系统全部内存

3、内存碎片清理(手动清理redis-cli memory purge和自动清理在配置文件redis最后一行添加activedefrag yes

4、设置合适的key回收机制

maxmemory-policy noeviction:禁止键值对回收(不擅长任何键值对,直到redis把内存塞满,写不了,报错为止)

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

redis雪崩(缓存雪崩):

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

redis集群大面积故障

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

redis实例宕机

解决方案:

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

事中:在国内用的比较多哥方式:HYSTRIX,熔断,降级,限流三个手段来降低雪崩发生之后的损失。

数据库不死即可,慢可以,但是不能没有响应

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

redis的缓存击穿:

缓存击穿主要是热点数据缓存过期,或者被删除,多个请求并发访问数据,请求也是转发到数据库了,导致数据库的性能快速下降

经常被请求的缓存数据,最好设置为永不过期

redis的缓存穿透:

缓存中没有数据,数据库也没有对应数据,但是有用户一直在发起这个都没有的请求,而且请求的数据格式很大

一般这种情况就是黑客利用漏洞进行攻击,压垮应用数据库

redis的集群:

1、持久化

2、高可用  主从复制  哨兵模式  集群

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

          主从复制实现数据的多机备份,以及读写分离(主服务器负责写,从服务器只能读)

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

主从复制的工作原理:

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

主从复制的实验:

(主)打开配置文件:vim /etc/redis/6379.conf

70行 IP地址改为0.0.0.0,让所有的主机都可以使用

137行 daemonize yes打开

700行 appendonly no打开变成yes

重启配置文件:/etc/init.d/redis_6379 restart

(从)打开配置文件:vim /etc/redis/6379.conf

70行 IP地址改为0.0.0.0,让所有的主机都可以使用

137行 daemonize yes打开

288行添加一行replicaof 192.168.233.11 6379

700行 appendonly no打开变成yes

哨兵模式:先有主从再有哨兵

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

哨兵模式的原理:

哨兵:分布式系统,用于在主从结构之间,对每台redis的服务进行监控

主节点出现故障时,从节点通过投票的方式选择一个新的master

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

哨兵模式的结构:

哨兵节点:监控,不存储数据

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

主:192.168.233.11

从:192.168.233.12

从:192.168.233.13

哨兵模式的实验:

(主)cd /opt/

cd redis-5.0.7/

vim sentinel.conf

17行注释取消掉protected-mode no

26行daemonize no改成yes

36行logfile "/var/log/sentinel.log"

65行dir "/var/lib/redis/6379"

84行sentinel monitor mymaster 192.168.233.11 6379 2

启动配置文件redis-sentinel sentinel.conf &

redis-cli -p 26379 info Sentinel

ps -elf | grep redis

(从)cd /opt/

cd redis-5.0.7/

vim sentinel.conf

17行注释掉protected-mode no

26行 daemonize no改为yes

36行logfile "/var/log/sentinel.log"

65行dir "/var/lib/redis/6379"

84行sentinel monitor mymaster 192.168.233.11 6379 2

启动配置文件redis-sentinel sentinel.conf &

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

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

相关文章

【nlp】2.8 注意力机制拓展

注意力机制拓展 1 注意力机制原理1.1 注意力机制示意图1.2 Attention计算过程1.3 Attention计算逻辑1.4 有无attention模型对比1.4.1 无attention机制的模型1.4.2 有attention机制的模型1 注意力机制原理 1.1 注意力机制示意图 Attention机制的工作原理并不复杂,我们可以用下…

本地训练,开箱可用,Bert-VITS2 V2.0.2版本本地基于现有数据集训练(原神刻晴)

按照固有思维方式,深度学习的训练环节应该在云端,毕竟本地硬件条件有限。但事实上,在语音识别和自然语言处理层面,即使相对较少的数据量也可以训练出高性能的模型,对于预算有限的同学们来说,也没必要花冤枉…

文件的原理和应用

常识: 1 文件包括属性和内容 2 文件有打开和未打开文件, 3 本文先讨论谁打开的文件,以及如何管理已经打开的文件 一 回忆c接口 1 fopen 我们在test.c里面用一下fopen函数,不存在打开的文件会默认创建,那为什么默认新建在当前…

易点易动设备管理系统:提升企业设备维修效率的工具

在现代企业运营中,设备的正常运行和及时维修至关重要。然而,传统的设备维修管理方法往往效率低下、易出错,给企业带来了不小的困扰。为了解决这一问题,易点易动设备管理系统应运而生。作为一款先进的智能化系统,易点易…

c语言——俄罗斯方块

一、游戏效果 俄罗斯方块 二. 游戏背景 俄罗斯方块是久负盛名的游戏,它也和贪吃蛇,扫雷等游戏位列经典游戏的⾏列。 《俄罗斯方块》(Tetris,俄文:Тетрис)是一款由俄罗斯人阿列克谢帕基特诺夫于1984…

ChatGPT/GPT4丨编程助手;AI画图;数据分析;科研/项目实现;提示词工程技巧;论文写作等

ChatGPT 在论文写作与编程方面也具备强大的能力。无论是进行代码生成、错误调试还是解决编程难题,ChatGPT都能为您提供实用且高质量的建议和指导,提高编程效率和准确性。此外,ChatGPT是一位出色的合作伙伴,可以为您提供论文写作的…

lv11 嵌入式开发 FS4412开发环境搭建 8

目录 1 开发板硬件资源介绍 2 初始原理图 3 交叉开发环境搭建 3.1 在ubuntu下安装交叉编译工具链 3.2 在windows下安装SecureCRT 3.3 在windows下安装USB转串口驱动 3.4 下载测试程序 4 硬件控制原理 4.1 地址映射表 4.2 查看数据手册 1 开发板硬件资源介绍 …

关于sklearn的:还可能是网络的问题???

前提:安装sklearn需要 numpy、scipy等库(这个自行搜索) 昨天安装numpy、scipy很快,一会就好了,然后安装sklearn一直报错,还以为是版本问题。 今天大早上起来,再次安装,顺利成功&…

GPIO模式详解:推挽/开漏/浮空/上拉/下拉/施密特(迟滞)输入

GPIO(General Purpose Input Output)可用于执行数字输入或输出功能。典型的应用包括从/向模拟或数字传感器/设备读写数值、驱动LED、为I2C通信驱动时钟、生成外部组件的触发、发出中断等。 文章目录 1 GPIO简介2 输出模式2.1 推挽输出2.2 开漏输出 3 输入模式3.1 高阻态(浮空)、…

CVE-2023-22515 Confluence未授权漏洞分析

0x01 漏洞描述 Confluence 是由 Atlassian 开发的企业级协作软件。2023年10月,Atlassian 官方披露 CVE-2023-22515 Atlassian Confluence Data Center & Server 权限提升漏洞。攻击者可构造恶意请求创建管理员,从而登录系统,造成敏感信息…

K8s实战RestartPoliy策略

一、默认策略为Always cmd.yaml apiVersion: v1 kind: Pod metadata:name: myapp-pod labels:app: myapp spec: containers:- name: myapp-container image: busyboxcommand: [sh, -c, echo OK!&& sleep 60]首先我们根据这个yaml创建一个测试的pod 执行命令 kubec…

GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件

GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件 文章目录 GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件前言一、安装git二、git基本操作2.1 初始化git2.2 配置局部生效2.3 配置全局生效 三、认识工作区…

【计算机网络笔记】路由算法之层次路由

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

路由的控制与转发原理

场景1:路由器收到数据包后,会根据数据包的目标IP地址,计算出目标网段,再确定终端设备的具体位置。这个过程中,还需要计算出接口,或数据包下一跳的地址。最终会生成一条路由,即路径,存…

2023亚太杯数学建模B题思路分析 - 玻璃温室中的微气候法规

1 赛题 问题B 玻璃温室中的微气候法规 温室作物的产量受到各种气候因素的影响,包括温度、湿度和风速[1]。其中,适 宜的温度和风速是植物生长[2]的关键。为了调节玻璃温室内的温度、风速等气候因素 , 温室的设计通常采用带有温室风扇的通风系统&#xf…

postgreSQL如何快速查询大表数据量

文章目录 场景方案结果 场景 我有一个非常大的表,估计几百万或者几千万。 我开始使用了 select count(*) from my_table_javapub 方式,查询非常慢。 如何解决??? 方案 如果你需要更快地获取表中的行数&#xff0c…

重磅!这本30w人都在看的Python数据分析畅销书:更新了!

想学习python进行数据分析,这本《利用python进行数据分析》是绕不开的一本书。目前该书根据Python3.10已经更新到第三版。 Python 语言极具吸引力。自从 1991 年诞生以来,Python 如今已经成为最受欢迎的解释型编程语言。 pandas 诞生于2008年。它是由韦…

生成式AI与大语言模型,东软已经准备就绪

伴随着ChatGPT的火爆全球,数以百计的大语言模型也争先恐后地加入了这一战局,掀起了一场轰轰烈烈的“百模大战”。毋庸置疑的是,继方兴未艾的人工智能普及大潮之后,生成式AI与大语言模型正在全球开启新一轮生产力革新的科技浪潮。 …

『亚马逊云科技产品测评』活动征文|通过Lightsail搭建个人笔记

提示:授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 文章目录 前言实践知识储备Lightsail介绍Leanote介绍实践…

一套开源、强大且美观的WPF UI控件库 - HandyControl

前言 今天给大家推荐一套开源、强大且美观的WPF UI控件库:HandyControl。 WPF介绍 WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动画效果等功能,让开发者可以创…