redis的性能管理

查看内存使用指标
 

查看内存使用指标
info memory used_memory:1800800 redis中主句占用的内存
used_memory_rss:5783552	redis向操作系统申请的内存
used_memory_peak:1800800使用内存的峰值

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

内存碎片率
used_memory_rss/used_memory系统已经分配给了redis,但是redis未能够有效利用的内存查看内存碎片率 redis-cli info memory | grep ratioallocator_frag_ratio:1.19
分配器碎片的比例,redis住金层调度时产生的内存,比例越小越好,值越高,内存的浪费越多allocator_rss_ratio:7.15
分配器占用物理内存的比例,告诉你主进程调度执行时占用了多少物理内存rss_overhead_ratio:0.31
rss是向系统申请的内存空间,redis占用物理空间额外的开销比例,比例越低越好,redis实际占用物理内存和向系统申请的内存越接近,额外的开销越低mem_fragmentation_ratio:3.33
内存碎片的比例,越低越好,内存的使用率越高
清理内存碎片率
自动清理内存碎片
vim /etc/redis/6379.conf
最后一行添加
activedefrag yes
重启服务手动清理内存碎片
redis-cli memory purge
自动触发清理内存碎片
设置redis的最大内存阀值
vim /etc/redis/6379.conf
567行
maxmemory lgb

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

key回收的策略
vim /etc/redis/6379.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的雪崩

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

什么情况导致雪崩?

1、redis集群大面积故障

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

3、redis实例宕机

解决方案

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

事中:在国内用的比较多的方式:HySTRIX,熔断,降级,限流 ,用这个三个手段来降低雪崩发生之后的损失(数据库不死即可,慢可以,但是不能没有响应)

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

redis的缓存击穿
缓存击穿什么导致的呢?

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

解决方法

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

键值对还在,但是值被替换了,原有的请求找不到之后,同样也回去请求后台数据库,也是击穿的一种

redis的缓存穿透

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

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

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

相关文章

虚函数可不可以重载为内联 —— 在开启最大优化时gcc、clang和msvc的表现

下面是对该问题的一种常见回答: 首先,内联是程序员对编译器的一种建议,因此可以在在重载虚函数时在声明处加上inline关键字来修饰, 但是因为虚函数在运行时通过虚函数表,而内联函数在编译时进行代码嵌入,因…

Linux wait函数用法

wait 函数是用于等待子进程结束并获取子进程的终止状态的系统调用。它在父进程中使用,用于等待其子进程终止并获得子进程的退出状态。 函数原型: pid_t wait(int *status);status 是一个指向整型的指针,用于存储子进程终止时的退出状态&…

redis的集群

高可用方案 1、持久化 2、高可用 主从复制 哨兵模式 集群 主从复制: 主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础之上实现高可用 主从复制实现数据的多机备份,以及读写分离(主服务器负责写,从服务器…

RFID读写器在物联网中的应用与优势

随着物联网技术的不断发展,RFID读写器作为物联网感知层的重要组成部分,在各个领域得到了广泛应用。本文将介绍RFID读写器在物联网中的应用及优势。 一、RFID读写器概述 RFID(Radio Frequency Identification)技术是一种利用无线…

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

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

Python遍历某一文件夹下的所有txt文件,并将这些txt文件的内容写到一个新的txt文件中

写在前面:最近在某视频网站学习java,视频中老师将所有知识点写在了当天代码文件夹下的txt文件中,我每天早晨复习的时候,要打开n多个目录才能找到要复习的全部内容,不胜其烦,因此写下此代码,将整…

【SA8295P 源码分析】129 - GMSL2 协议分析 之 Video Frame 帧数据结构分析 PCLK 计算公式

【SA8295P 源码分析】129 - GMSL2 协议分析 之 Video Frame 帧数据结构分析 & PCLK 计算公式 一、GMSL2 Video Frame 数据分析1.1 视频帧数据结构组成1.2 PCLK 计算公式二、GMSL2 协议 Video 数据带宽计算三、双加载模式 Double Loading Mode四、零填充模式 Zero-Padding M…

leetcode 240. 搜索二维矩阵 II

2023.11.22 本题最先想到的是暴力法和二分法,暴力法就不写了,写一下二分法的解法,java代码如下: class Solution {public boolean searchMatrix(int[][] matrix, int target) {for(int[] row : matrix){int left 0;int right r…

网站首页布局设计模板推荐给你这个8款!

想要设计一个有品质的网站首页,一款好的网站首页布局设计模板是不可或缺的。然而,网站首页布局设计模板市场上的品质千差万别,要花费大量时间和精力寻找合适的模板。于是,本篇文章将介绍免费获取网站首页布局设计模板的步骤&#…

Moonbeam Network已上线原生USDC稳定币

原生USDC已经通过XCM从波卡来到了Moonbeam,该如何利用?此次集成通过把热门的Circle稳定币带来波卡生态,连接了区块链世界与传统金融。现在,用户和开发者可以在Moonbeam网络中踏寻USDC的强大之处。 Moonbeam生态中的Moonwell、FiD…

【容器化】Kubernetes(k8s)

文章目录 概述Docker 的管理痛点什么是 K8s云架构 & 云原生 架构核心组件K8s 的服务注册与发现组件调用流程部署单机版部署主从版本Operator来源拓展阅读 概述 Docker 虽好用,但面对强大的集群,成千上万的容器,突然感觉不香了。 这时候就…

消息中间件——RabbitMQ(四)命令行与管控台的基本操作!

前言 在前面的文章中我们介绍过RabbitMQ的搭建:RabbitMQ的安装过以及各大主流消息中间件的对比:,本章就主要来介绍下我们之前安装的管控台是如何使用以及如何通过命令行进行操作。 1. 命令行操作 1.1 基础服务的命令操作 rabbitmqctl sto…

验收材料-软件质量保证措施

一、 质量保障措施 二、 项目质量管理保障措施 (一) 资深的质量经理与质保组 (二) 全程参与的质量经理 (三) 合理的质量控制流程 1. 质量管理规范: 2. 加强协调管理&…

模块计算机类型“x64”与目标计算机类型“x86”冲突

在使用DDS过程中,nddscpp2.lib(nddscpp2.dll) : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“x86”冲突。 问题原因为lib库为64位,而编译器选择的是32位。

Uniapp从零开始,手把手教学(附精选源码32套,涵盖商城团购等)

一、介绍 如果是刚入门小程序的,又或者刚听到这个名词的人,可能跟我之前一样,带着诸多的疑惑。比如: 什么是uniapp?它和原生微信小程序有什么异同之处? 为什么推荐uniapp开发? 这里一句话两…

我的创作纪念日2048天

机缘 在这特殊的日子里,我要庆祝我的 CSDN 创作纪念日——已经坚持了整整2048天! 在这2048天里,我经历了很多成长和收获。作为一名技术写手,我投入了大量的时间和精力来分享我的知识和经验。我曾经写过关于数据库、数据同步、数…

quickapp_快应用_requestHeader

和客户端相同,在进行请求交互中,后端会需要获取当前设备信息,此时需要使用应用上下文app与设备信息 应用版本号 const app require(system.app)app.getInfo().versionName // versionName:应用版本名称 (manifest.json中versio…

让SOME/IP运转起来——SOME/IP系统设计(下)之数据库开发

上一篇我们介绍了SOME/IP矩阵的设计流程,这一篇重点介绍如何把SOME/IP矩阵顺利的交给下游软件团队进行开发。 车载以太网通信矩阵开发完成后,下一步应该做什么? 当我们完成SOME/IP矩阵开发,下一步需要把开发完成的矩阵换成固定格…

一个测试驱动的Spring Boot应用程序开发

文章目录 系统任务用户故事搭建开发环境Web应用的框架Spring Boot 自动配置三层架构领域建模域定义与领域驱动设计领域类 业务逻辑功能随机的Challenge验证 表示层RESTSpring Boot和REST API设计API第一个控制器序列化的工作方式使用Spring Boot测试控制器 小结 这里采用面向需…

大模型创业“风投”正劲,AGI Foundathon 大模型创业松活动精彩看点

这是一场万众瞩目的大模型领域盛会。当来自世界各地的顶尖大模型开发者、创业者、投资人汇聚一堂,他们对大模型应用层的思考碰撞出了哪些火花?应运而生了哪些令人眼前一亮的AI-Native产品? 让我们一起来回顾吧~