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

启动哨兵

查看整个集群的哨兵情况

查看日志

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

关闭服务

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

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

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

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

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

相关文章

解析IBM SPSS Statistics 26 forMac/win中文版:全面统计分析解决方案

作为一款强大的统计分析软件,IBM SPSS Statistics 26(spss统计软件)在全球范围内被广泛使用。无论是学术研究、市场调研还是商业决策,SPSS统计软件都能提供全面的解决方案,帮助用户快速、准确地分析数据。 首先&#…

第二证券:什么是权重股?权重股可以长期持有吗?

权重版块是指该版块股票市值巨大,在股票总市值中的比重很大(即权重很大),其涨跌对股票指数的影响很大的一个版块,比方,商场上的证券、钢铁、银行、保险、石油等板块的个股。 权重股适合长时间持有&#xf…

Mac- Iterm 2 (替换mac terminal 终端的下一代终端工具)

1.应用场景 主要用于macOS中作为终端工具使用, 执行终端命令, Iterm 2 (替换mac terminal 终端的下一代终端工具) 2.学习/操作 1.文档阅读 chatgpt & 其他资料 2.整理输出 2.1 是什么 Iterm 2 (替换mac terminal 终端的下一代终端工具) 2.2 为什么需要「应用场景」 macOS…

skywalking中gateway的拓扑图没有出现

背景: 刚开始的时候gateway没有出现,后来百度说添加插件的jar包, apm-spring-cloud-gateway-2.1.x-plugin-8.15.0.jar apm-spring-webflux-5.x-plugin-8.15.0.jar 然后解决了gateway节点出来了, 但是:拓扑图却是User指…

利用NVIDIA DALI读取视频帧

1. NVIDIA DALI简介 NVIDIA DALI全称是NVIDIA Data Loading Library,是一个用GPU加速的数据加载和预处理库,可用于图像、视频和语音数据的加载和处理,从而为深度学习的训练和推理加速。 NVIDIA DALI库的出发点是,深度学习应用中…

文心大模型商业化领跑,百度在自我颠覆中重构生长力

随着科技巨头竞逐AI大模型,人工智能技术成为今年最受瞩目的新技术。但是,AI大模型的创新之路,还缺少一个足够有力的商业化答案。 作为全球最先发布大模型的互联网大厂,百度能否加速大模型的应用落地,以及文心大模型能…

C++ Boost 实现异步端口扫描器

端口扫描是一种用于识别目标系统上哪些网络端口处于开放、关闭或监听状态的网络活动。在计算机网络中,端口是一个虚拟的通信端点,用于在计算机之间传输数据。每个端口都关联着特定类型的网络服务或应用程序。端口扫描通常是网络管理员、安全专业人员用来…

springboot项目中获取业务功能的导入数据模板文件

场景: 在实际业务场景中,经常会遇到某些管理功能需要数据导入共功能,但既然是导入数据,肯定会有规则限制,有规则就会有数据模板,但这个模板一般是让客户自己下载固定规则模板,而不是让客户自己随便上传模板。下面介绍直接下载模板 一、下载模板示例 1、在项目的…

Mysql查看Binlog文件

前期准备 检查是否开启binlog mysql> SHOW VARIABLES LIKE log_bin; // 或者 mysql> SHOW VARIABLES LIKE log%;ON代表开启,OFF代表关闭。如为OFF需 开启 后才能查看,但只能查看开启之后时间点的。 查看binlog文件有哪些 一般yum安装的mysql…

Program Header Table(转载)

程序头表与段表相互独立,由ELF文件头统一管理。 程序头表负责ELF文件从文件到加载后映像的映射关系,一般只有可执行文件包含。 1. segment和section segment: 程序头表项描述的对象称为segment,即elf文件加载后的数据块; 它提供…

微服务开发中,使用AOP和自定义注解实现对权限的校验

一、背景 微服务开发中,暴露在外网的接口,为了访问的安全,都是需要在http请求中传入登录时颁发的token。这时候,我们需要有专门用来做校验token并解析用户信息的服务。如下图所示,http请求先经过api网关,网…

[点云分割] 欧式距离分割

效果&#xff1a; 代码&#xff1a; #include <iostream> #include <chrono>#include <pcl/ModelCoefficients.h> // 模型系数的定义 #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> // 各种点云数据类型 #include <pcl/sample_c…

java“贪吃蛇”小游戏

基于java实现贪吃蛇小游戏&#xff0c;主要通过绘制不同的图片并以一定速度一帧一帧地在窗体上进行展示。 我是在javaSwing项目下创建了一个包 名字叫做&#xff1a;Snakes包 包下有一个启动类和一个设置代码的主界面两个类 代码主界面&#xff1a; 代码主界面主要讲解的是 …

window文件夹下python脚本实现批量删除无法预览的图片

你是否遇到过下载的图片会发现有些图片会无法预览情况&#xff1f; 有几种原因可能导致一些图片在预览时无法正常显示&#xff1a; 损坏的图片文件&#xff1a; 图片文件可能损坏或者部分损坏&#xff0c;导致无法被正常解析和预览。这种情况可能是因为文件在传输过程中损坏、…

机器学习入门(第二天)——感知机

概述 每个算法都是为了解决一类问题&#xff0c;或者说解决之前的问题所创造出来的&#xff0c;而感知机&#xff0c;在解决一类问题的时候也暴露了很多问题&#xff0c;变相的推动了以后的算法的改进方向。 知识树 苹果表示相对重要的 直观介绍 现在有一盘红豆和绿豆&#…

2014年8月20日 Go生态洞察:Go在OSCON的精彩亮相

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

网络异常检测

随着社交网络、视频流、点对点技术、云计算和 SaaS 的出现&#xff0c;可以肯定地说&#xff0c;现代企业的好坏取决于他们的网络&#xff0c;尤其是在它们提供的带宽和安全性方面。无论是银行保护其数据免遭盗窃&#xff0c;还是商业组织保护其网络免受安全威胁和攻击&#xf…

ChatGLM-6B下载安装

ChatGLM-6B下载安装 项目指向 想把模型下载本地微调 通过官网指引需要先下载git-lfs #Linux 下载安装 curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash sudo apt-get install git-lfs git lfs install如果是docker中的虚拟机…

如何隐藏自己的代码(很酷)

1.引入 幻想当我们成为一名优秀的程序员&#xff0c;有着各大公司想要买我们的代码&#xff0c;但我们并不想要让他们知道我们代码的实现&#xff0c;毕竟一复制便可以解决&#xff0c;这里我们希望有一种方法可以把我们的核心代码给隐藏掉&#xff0c;那我们又应该怎么去实现呢…

官宣!代理IP品牌「一连IP」正式上线

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 今天&#xff0c;企业级代理IP供应商【一连IP】…