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

news2024/10/3 4:41:00

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.coloradmin.cn/o/1241093.html

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

相关文章

C语言—指针入门

内存存放数据 如果发送指令,读取f变量的内容,则先找f - >10005这个字节,然后再找到123。 指针和指针变量 通常说的指针就是地址的意思,C中有专门的指针变量存放指针。一个指针占4个字节。 定义指针变量 类型名 *指针变量名…

数组的移动

设计程序&#xff0c;给定包含N个整数的数组array&#xff0c;实现操作&#xff1a;前面各个整数顺序向后移动m个位置&#xff0c;最后的m个整数移动到最前面。方法&#xff1a;void move(int array[], int n,int m ) 输入要求 第一行输入两个整数N(1<N<1e6)和m(0<m&…

JavaEE 多线程01

为什么引入多线程? 首先进程已经能很好的完成多任务这个情景下的并发编程了,那为什么又引入多线程呢? 这是因为在一些情景下,我么需要大量的创建和销毁进程来完成一些任务,此时多进程对系统的开销就会很大了. 假设有这样一个场景,服务器同时接收到很多个服务请求,这个时候服务…

MAX/MSP SDK学习06:内存管理

提供两种内存分配方式&#xff1a;①简单指针&#xff0c;②句柄&#xff08;二级指针&#xff09;&#xff1b;官方文档建议使用前者。 // 简单指针 char *ptr; ptr sysmem_newptr(2000); post("I have a pointer %lx and it is %ld bytes in size",ptr, sysmem_p…

算法的奥秘:常见的六种算法(算法导论笔记2)

算法的奥秘&#xff1a;种类、特性及应用详解&#xff08;算法导论笔记1&#xff09; 上期总结算法的种类和大致介绍&#xff0c;这一期主要讲常见的六种算法详解以及演示。 排序算法&#xff1a; 排序算法是一类用于对一组数据元素进行排序的算法。根据不同的排序方式和时间复…

通过python脚本上传远程服务器文件到minio

前言 将文件上传到MinIO对象存储后&#xff0c;MinIO会将文件存储为对象(.meta文件)&#xff0c;并为每个对象生成相应的元数据。元数据是描述对象的属性和信息的数据。 通常&#xff0c;元数据包括对象的名称、大小、创建日期等。 在MinIO中&#xff0c;对象的元数据存储在独立…

递归回溯剪枝-子集

LCR 079. 子集 - 力扣&#xff08;LeetCode&#xff09; 方法一 1. 决策树&#xff1a;对于决策树&#xff0c;思考的角度不同&#xff0c;画出的决策树也会不同&#xff0c;这道题可以从两个角度来画决策树。 2. 考虑全局变量的使用&#xff1a; 使用全局变量 List<List&…

Modbus TCP

Modbus &#xff08;&#x1f446; 百度百科&#xff0c;放心跳转&#xff09; 起源 Modbus 由 Modicon 公司于 1979 年开发&#xff0c;是一种工业现场总线协议标准。 Modbus 通信协议具有多个变种&#xff0c;支持串口&#xff0c;以太网多个版本&#xff0c;其中最著名的…

智慧城市内涝积水监测仪功能,提升城市预防功能

内涝积水监测仪不仅改变了人们应对城市内涝的老办法&#xff0c;还让智慧城市往前迈了一大步。这个监测仪是怎么做到的呢&#xff1f;就是靠它精准的数据监测和预警&#xff0c;让城市管理有了更科学高效的解决妙招。它就像有了个聪明又负责任的助手&#xff0c;让城市管理更加…

AI虚拟主播系统+智能交互+AI词库+虚拟形象 附带完整的搭建教程

近几年电商直播带货热潮持高不跌&#xff0c;很多商家企业都会选择线上直播卖产品&#xff0c;与此同时&#xff0c;虚拟主播开始盛行&#xff0c;与真人主播相比&#xff0c;品牌虚拟主播无档期风险、离职风险、人设稳定更可控。 AI虚拟主播的不是为了取代真人主播而开发&…

AI:86-基于深度学习的街景图像地理位置识别

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新中,…

mapBox地图第一个案例和聚合图标自定义

Mapbox地图数据平台 1.简介 Mapbox是移动的和Web应用程序的位置数据平台&#xff0c;适用于分层区位分析图&#xff0c;可自定义元素、色彩等&#xff0c;任何图层都可编辑.。Mapbox灵活的地图和位置构建块可以无缝集成到您的数据分析应用程序或数据可视化中。 平滑的矢量地…

Dubbo从入门到上天系列第十八篇:Dubbo引入Zookeeper等注册中心简介以及DubboAdmin简要介绍,为后续详解Dubbo各种注册中心做铺垫!

文章目录 一&#xff1a;Dubbo注册中心引言 1&#xff1a;什么是Dubbo的注册中心&#xff1f; 2&#xff1a;注册中心关系图解 3&#xff1a;引入注册中心服务执行流程 4&#xff1a;Dubbo注册中心好处 5&#xff1a;注册中心核心作用 二&#xff1a;注册中心实现方案 …

10.docker的网络network-概述

1.docker的网络模式 docker共有四种网路模式&#xff0c;分别是bridge、host、none和container. 1.1 bridge bridge,也称为虚拟网桥。在bridge模式下&#xff0c;为每个容器分配、配置IP等&#xff0c;并将容器连接到一个docker0。使用–network bridge命令指定&#xff0c;…

程序员指南六:数据平面开发套件

PORT HOTPLUG FRAMEWORK 端口热插拔框架为DPDK应用程序提供在运行时附加和分离端口的能力。由于该框架依赖于PMD实现&#xff0c;PMD无法处理的端口超出了该框架的范围。此外&#xff0c;在从DPDK应用程序分离端口后&#xff0c;该框架不提供从系统中移除设备的方法。对于由物…

【用unity实现100个游戏之16】Unity中程序化生成的2D地牢5(附项目源码,完结)

文章目录 最终效果前言生成墙壁优化方法一、使用rule tile方法二、使用代码生成墙壁补充最终效果后续参考源码完结最终效果 前言 本期是本项目最后一期,主要是进行墙壁的生成优化和补充一下剩下了的其他内容 生成墙壁优化 方法一、使用rule tile 我这里大概给个rule tile参…

跟着Cancer Cell 学作图| 配对棒棒糖图(Lollipop chart)

dotplot 本期图片 ❝ Doi&#xff1a;https://doi.org/10.1016/j.ccell.2022.02.013 ❞ ❝ Dotplot showing the association of cell populations with different tissue types (organ or tumor). The x axis represents cell types, and the y axis represents the different…

对比两个数组中对应位置的两个元素将每次对比的最大值用于构成新的数组np.maximum()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 对比两个数组中对应位置的两个元素 将每次对比的最大值用于构成新的数组 np.maximum() 选择题 以下代码的输出结果为&#xff1f; import numpy as np a1 [1,2,33] a2 [11,2,3] print("…

webshell之无扩展免杀

1.php加密 这里是利用phpjiami网站进行加密&#xff0c;进而达到加密效果 加密前&#xff1a; 查杀效果 可以看到这里D某和某狗都查杀 里用php加密后效果 查杀效果 可以看到这里只有D某会显示加密脚本&#xff0c;而某狗直接绕过 2.dezend加密 可以看到dezend加密的特征还是…

DockerHub 无法访问 - 解决办法

背景 DockerHub 镜像仓库地址 https://hub.docker.com/ 突然就无法访问了,且截至今日(2023/11)还无法访问。 这对我们来说,还是有一些影响的: ● 虽然 DockerHub 页面无法访问,但是还是可以下载镜像的,只是比较慢而已 ● 没法通过界面查询相关镜像,或者维护相关镜像了…