redis的性能管理

news2024/9/23 13:20:40

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

[root@10 ~]# redis-cli -h 192.168.233.10 -p 6379

192.168.233.10:6379> info memory

(几个比较重要的指标)

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

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

used_memory_peak:853592  redis使用内存的峰值

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

内存碎片率:used_memory_rss/used_memory=内存碎片率

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

[root@10 ~]# redis-cli info memory | grep ratio

allocator_frag_ratio:1.33  ----- 分配器碎片的比例。redis主进程调度时产生的内存。这个比例越小越好(这里是1.33%),数值越大,说明内存的浪费越多

allocator_rss_ratio:4.43  ----- 分配器占用物理内存的比例。主进程调度执行时占用了多少物理内存

rss_overhead_ratio:2.04  ----- redis占用物理课件额外的开销比例。该比例越低越好,redis实际占用的物理内存和向系统申请的内存越接近,额外的开销越低

mem_fragmentation_ratio:17.76  ----- 内存碎片的比例。该比例越低越好。比例越低,内存的使用率越高

自动清理碎片

[root@10 ~]# vim /etc/redis/6379.conf

G

o

activedefrag yes

:wq!

[root@10 ~]# /etc/init.d/redis_6379 restart

手动清理碎片

[root@10 ~]# redis-cli memory purge

设置redis的最大内存阀值

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

[root@10 ~]# vim /etc/redis/6379.conf

567gg

o

maxmemory 1gb

599gg

o

maxmemory-policy volatile-lru

maxmemory-policy volatile-ttl

maxmemory-policy volatile-random

:wq!

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占用内存设置阀值

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

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

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

3、内存碎片清理,手动&自动

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

redis故障

1、redis雪崩(缓存雪崩)

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

发生原因:①redis集群人面积故障;②redis缓存中,大量数据同时过期,大量的请求无法得到处理;③redis实例岩机;④恶意删除flushall

解决方案:①事前防护:高可用架构,防止整个缓存故障。主从复制和哨兵模式和redis集群;②事中:(主要是开发干)在国内用的较多的方式:HySTRIX,熔断、降级、限流三个手段用来降低雪崩的损失。数据库不死即可,慢可以,但是不能没有响应;③事后:redis备份、快速缓存预热

2、redis缓存击穿【⭐】

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

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

解决方法:经常被请求的缓存数据设置为永不过期

3、redis的缓存穿透

缓存中和数据库里都没有数据,但是有用户一直在发起都没有的请求,而且请求的数据格式还很大,一般是黑客利用漏洞进行攻击,压垮应用数据库

redis的集群

高可用的方案

1、持久化

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

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

主从复制实现数据的多机备份以及数据的读写分离(主服务器负责写,从服务器只能读)。缺陷是故障无法自动恢复,需要人工干预,写操作的负载均衡

主从复制的工作原理

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

主从复制实验

192.168.233.20 主

192.168.233.20 从1

192.168.233.30 从2

哨兵模式实验

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

哨兵模式的原理

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

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

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

哨兵模式的结构:

1、哨兵节点

监控,不存储任何数据

2、数据节点

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

工作机制

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

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

主节点的选举过程

1、已经下线的从节点不会被选为主节点

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

3、自动选择复制数据最完整那个从节点

sentinel monitor mymaster 192.168.233.10 6379 2

2表示至少需要2台服务器认为主已经下线,才会进行主从切换

小模式用哨兵,大模式用集群

此时主机从10转换成30

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

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

相关文章

2023亿发数字化智能工单,专业管理工单处理全流程,助力企业转型腾飞

伴随着智能化和信息化的不断深入,企业数字化转型势如腾飞。在这个过程中,工单管理成为生产、家电、后勤等多个管理场景下频繁应用的关键环节。如何满足管理方对设备、服务等智能化管理的需求,提升工单管理效率、规范管理流程,并实…

【linux】 mpstat 使用

​mpstat mpstat 可以查看所有cpu的平均负载,也可以查看指定cpu的负载。所以mpstat其实就是主要查看CPU负载的一个工具。是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标。 mpstat 是sysstat中的一个工…

【码神之路】【Golang】博客网站的搭建【学习笔记整理 持续更新...】

介绍 一个用原生GO开发的博客网站,涉及Golang Web开发、Web服务器搭建和HTTP请求处理、模板与静态资源处理等 技术栈 后端:Go、Go并发机制前端:HTML模版链接直达 Golang搭建博客网站的学习视频 注:这里我只记录我实质✅学习到…

Linux 安装显卡驱动

Linux 安装显卡驱动

matplotlib设置y轴刻度范围【已解决】

用matplotlib绘制个一个图,但是y轴刻度过大,因为AUC本身最大值是1,所以现在需要修改y轴刻度 上图的代码如下 import matplotlib.pyplot as plt import numpy as np# 假设你的数据范围是0.5到1 y_ticks_range np.arange(0.5, 1.1, 0.1)# 示…

全国市政公用事业和邮政、电信业发展数据,shp/excel格式

随着城市化进程的加速和人们对城市生活品质要求的提高,市政公用事业和邮政、电信业发展越来越受到关注。 今天我们来分享全国市政公用事业和邮政、电信业发展数据,为读者呈现一个更加全面的行业发展图景。 首先了解下数据的基本信息,格式为s…

javaScript 内存管理

1 js 内存机制 内存空间:栈内存(stack)、堆内存(heap) 栈内存:所有原始数据类型都存储在栈内存中,如果删除一个栈原始数据,遵循先进后出;如下图:a 最先进栈&…

机器学习中的特征选择:方法和 Python 示例

布拉加德什桑达拉拉詹 一、说明 特征选择是机器学习流程中至关重要且经常被低估的步骤。它涉及从数据集中的原始特征集中选择最相关的特征(输入变量或属性)的子集。特征选择的重要性怎么强调都不为过,因为它直接影响机器学习模型的质量、效率…

MyCAT2的主从配置

http://t.csdnimg.cn/KzwDy(mysql主从搭建) 前提,先搭建好MySQL的主从配置,登录MyCAT 2在MyCAT2里面操作,也就是连接8066这个端口。 一、创建数据源 ​​​​​​​1.创建数据源 添加读写的数据源 /* mycat:createD…

paramiko STELNET登陆设备

实验目的: 公司有一台CE12800的设备,管理地址位172.16.1.2,现在需要编写自动化脚本,通过ssh登陆到设备上并进行简单的信息查看。 实验拓扑: 实验步骤: 步骤1:将本地电脑和ensp的设备进行桥接…

Azure Machine Learning - 搜索中的语义排名

目录 什么是语义排名?语义排名的工作原理如何收集和总结输入语义排名的输出如何对摘要进行评分 语义功能和限制 在 Azure AI 搜索中,“语义排名”通过使用语言理解对搜索结果重新排名来显著提高搜索相关性, 本文概括性地介绍了语义排名工作原…

脱离form表单校验input(校验单个input输入框)提交时边框变红

把需要自定义校验的数据放在一个对象中&#xff0c;方便以后多个字段校验 customVerifyInps:{communityInp2:"",asPathInp:"",}, 在输入框中绑定id <el-inputid"communityInp2"placeholder""v-model"customVerifyInps.commu…

【数据结构-零基础学习】线索二叉树(代码+图示+解析)

【数据结构-零基础学习】线索二叉树(代码图示解析) 文章目录 【数据结构-零基础学习】线索二叉树(代码图示解析)[toc]定义产生背景种类示意图1)未加入线索的普通二叉树示意图1.12)线索添加的规则3)中序线索二叉树示意图1.24)中序线索二叉树分析示意图1.3 设计代码逻辑(重点)代码…

户外耳机推荐,这几款高性价比的户外耳机不容错过!

对于喜欢户外运动的人来说&#xff0c;在耳机的选择上至关重要&#xff0c;推荐使用骨传导运动耳机的&#xff0c;因为相较于普通的入耳式耳机&#xff0c;前者是通过振动来传输声音的&#xff0c;而后者则是通过空气传导到耳内的。如果是在户外跑步听不到周围环境声音和鸣笛声…

振南技术干货集:制冷设备大型IoT监测项目研发纪实(2)

注解目录 1.制冷设备的监测迫在眉睫 1.1 冷食的利润贡献 1.2 冷设监测系统的困难 &#xff08;制冷设备对于便利店为何如何重要&#xff1f;了解一下你所不知道的便利店和新零售行业。关于电力线载波通信的论战。&#xff09; 2、电路设计 2.1 防护电路 2.1.1 强电防护 …

vue超好用的自定义指令封装

一、指令封装 目录结构&#xff1a; index.ts 统一注册 import { App, Directive } from "vue"; import auth from "./modules/auth"; import copy from "./modules/copy"; import waterMarker from "./modules/waterMarker"; impor…

Python简直是万能的,这5大主要用途你一定要知道!

从2015开始国内就开始慢慢接触Python了&#xff0c;从16年开始Python就已经在国内的热度更高了&#xff0c;目前也可以算的上"全民Python"了。 众所周知小学生的教材里面已经有Python了&#xff0c;国家二级计算机证也需要学习Python了&#xff01; 因为Python简单…

基于springboot实现冬奥会科普平台系统【项目源码+论文说明】计算机毕业设计

基于SpringBoot实现冬奥会科普平台系统演示 摘要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理平台应运而生&…

CSS实现空心的“尖角”

大家好&#xff0c;我是南宫&#xff0c;来分享一个昨天解决的问题。 我记得之前刷面试题的时候&#xff0c;CSS面试题里面赫然有一题是“如何用CSS实现三角形”&#xff0c;我觉得这个问题确实很经典&#xff0c;我上的前端培训班当初就讲过。 大概思路如下&#xff1a; 先…

Redis -- 介绍

1、NoSQL: 指的是非关系型数据库&#xff0c;主要分成四大类&#xff1a;键值存储数据库、列存储数据库、文档型数据库、图形数据库。 2、什么是Redis&#xff1a; Redis是一种基于内存的数据库&#xff0c;一般用于做缓存的中间件。 3、Redis的主要的特点&#xff1a; 1、Rd…