Redis变慢了?之二

news2024/11/20 16:30:59

Redis变慢了?之二

  • Redis变慢了
  • 规律性变慢
    • Redis几种过期策略的区别?
      • 定时过期
      • 惰性过期
      • 定期过期
      • 优化方案
  • 实例内存达上限
    • 内存淘汰策略
  • 写在最后

Redis变慢了

Redis变慢上一篇文章地址:Redis变慢了?这篇文章继续Redis变慢情况的分析。

规律性变慢

在使用Redis的过程中,大家有没有遇到过Redis总是会不定时的规律性的变慢,这种情况一般就是说在固定的时间点有大量的Redis key过期,此时大量访问进来的话响应就会变慢。

Redis几种过期策略的区别?

Redis过期策略主要有三种:定时过期、惰性过期、定期过期。

定时过期

定时过期:在设置 key 的过期时间时,同时创建一个定时事件,当时间到达时,由事件处理器自动执行 key 的删除操作。
优点:可以保证过期 key 会被尽快删除,也就是内存可以被尽快地释放。因此,定时过期对内存是最好的。
缺点:在过期 key 比较多的情况下,删除过期 key 可能会占用相当一部分 CPU 时间,在内存不紧张但 CPU 时间紧张的情况下,将 CPU 时间用于删除和当前任务无关的过期键上,无疑会对服务器的响应时间和吞吐量造成影响。所以,定时过期策略对 CPU 不太好。

惰性过期

惰性过期:每次不主动删除过期键,从数据库访问 key 时,都检测 key 是否过期,如果过期则删除该 key。
优点:因为每次访问时,才会检查 key 是否过期,所以此策略只会使用很少的系统资源,因此,惰性过期策略对 CPU 时间最好。
缺点:如果一个 key 已经过期,而这个 key 又仍然保留在数据库中,那么只要这个过期 key 一直没有被访问,它所占用的内存就不会释放,造成了一定的内存资源浪费。所以,惰性过期策略对内存不太好。

定期过期

定期过期:每隔一段时间「随机」从数据库中取出一定数量的 key 进行检查,并删除其中的过期key。随机抽查的数量由 ACTIVE_EXPIRE_CYCLE_LOOKUPS_PER_LOOP 定义的,它是写死在代码中的,数值是 20。
优点:通过限制删除操作执行的时长和频率,来减少删除操作对 CPU 的影响,同时也能删除一部分过期的数据减少了过期键对空间的无效占用。
缺点:内存清理方面没有定时删除效果好,同时没有惰性过期使用的系统资源少。难以确定删除操作执行的时长和频率。如果执行的太频繁,定期过期策略变得和定时过期策略一样,对CPU不友好;如果执行的太少,那又和惰性过期一样了,过期 key 占用的内存不会及时得到释放。

优化方案

首先在配置redis时选择合适的过期策略搭配,然后就是在业务代码中尽量避免同一时间大批量key过期的情况,分散过期key的时间,减少由于删除过期key,以及大量访问时带来的延迟。

实例内存达上限

Redis当 Redis 的运行内存已经超过 Redis 设置的最大内存之后,则会使用内存淘汰策略删除符合条件的 key,以此来保障 Redis 高效的运行。而踢出旧数据的逻辑也是需要消耗时间的,这也就是当Redis运行内存达上限时写入数据会变慢的情况。

内存淘汰策略

Redis内存淘汰策略主要有以下几种:
• noeviction :它表示当运行内存超过最大设置内存时,不淘汰任何数据,这时如果有新的数据写入,则会触发 OOM,如果只是查询和删除的话则不影响。
对于设置了过期时间的淘汰策略:
• volatile-random:随机淘汰设置了过期时间的任意键值。
• volatile-ttl:优先淘汰更早过期的键值。
• volatile-lru:淘汰所有设置了过期时间的键值中,最久未使用的键值。
• volatile-lfu:淘汰所有设置了过期时间的键值中,最少使用的键值。
对于所有数据适用的淘汰策略:
• allkeys-random:随机淘汰任意键值。
• allkeys-lru:淘汰整个键值中最久未使用的键值。
• allkeys-lfu:淘汰整个键值中最少使用的键值。
一般常用的是allkeys-lru / volatile-lru 淘汰策略。
查看当前Redis淘汰策略

127.0.0.1:6379> config get maxmemory-policy

在这里插入图片描述
可以看到配置的是volatile-lru,设置淘汰策略可以用 【config set maxmemory-policy <策略>】但是Redis重启之后会失效,如果需要永久生效的话需要在配置文件中设置并重启Redis。

写在最后

后续会继续分析其他场景下Redis变慢的情况,敬请关注。

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

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

相关文章

PyQt5.QtWidgets常用函数及说明

目录 PyQt5.QtWidgets简介常用函数设置窗口标题和固定大小创建垂直布局创建进度条 PyQt5.QtWidgets简介 PyQt5.QtWidgets 是 PyQt5 库中的一个模块&#xff0c;它包含了用于创建图形用户界面&#xff08;GUI&#xff09;的各种小部件&#xff08;widgets&#xff09;。这些小部…

【ARM】如何通过Keil MDK查看芯片的硬件信息

【更多软件使用问题请点击亿道电子官方网站】 1、文档目标&#xff1a; 解决在开发过程中对于开发项目所使用的的芯片的参数查看的问题 2、问题场景&#xff1a; 在项目开发过程中&#xff0c;经常需要对于芯片的时钟、寄存器或者一些硬件参数需要进行确认。大多数情况下是需…

【前端取不到cookie的的原因】http-only

某条cookie有http-only属性时&#xff0c;下面两种方法都取不到&#xff0c;还是改需求吧&#xff0c;别取了 1、 npm install js-cookie --save import Cookies from js-cookie let cookieValue Cookies.get(name)2、document.cookie

STM32单片机-通信协议(下)

STM32单片机-通信协议(下&#xff09; 一、通信协议介绍二、USART(通用同步/异步收发器)2.1 USART框图和基本结构2.2 串口发送2.2.1 Printf函数移植2.2.2 串口发送汉字 2.3 串口接收2.3.1 串口接收查询2.3.2 串口接收中断 2.4 USART串口数据包2.4.1 数据包格式2.4.2 数据包接收…

可平滑替代传统FTP的国产FTP方案,了解一下

企业在处理数据传输时&#xff0c;效率和安全性是关键。尽管传统FTP曾被广泛采用&#xff0c;然而&#xff0c;随着企业业务需求的增长&#xff0c;传统FTP在传输速度、安全性、稳定性以及可控性方面的不足逐渐显现。许多企业正在寻找更为高效、安全且用户体验更好的的国产FTP方…

助力低空经济-eVTOL/无人机ADS-B航管应答机选型指南

一、低空经济概述 “低空经济”在今年全国两会首次写入政府工作报告。近日&#xff0c;工业和信息化部、科学技术部、财政部、中国民用航空局印发《通用航空装备创新应用实施方案&#xff08;2024—2030年&#xff09;》&#xff0c;提出到2030年&#xff0c;推动低空经济形成…

操作系统 大作业

1、现有成绩文件按“姓名 学校 年级 班级 分数”五列组成&#xff0c;编写Shell脚本&#xff0c;将某目录下所有成绩文件&#xff08;≥3个&#xff09;合并为一个&#xff0c;形成“姓名 班级 分数”三列&#xff0c;并按成绩排序&#xff0c;输出年级排名前十。同时输出60以下…

Three.js框架的技术难点

Three.js作为一款功能强大的3D JavaScript框架&#xff0c;在为开发者提供丰富的功能和灵活性的同时&#xff0c;也带来了一些技术难点&#xff0c;需要开发者具备一定的知识和经验才能克服。以下是一些Three.js框架的技术难点。北京木奇移动技术有限公司&#xff0c;专业的软件…

高考志愿选专业,文科生如何分析选择专业?

每到高考时节&#xff0c;学生们最关注的就是专业选择&#xff0c;以及未来职业发展问题&#xff0c;对于文科生来说&#xff0c;面对文科专业的众多选择&#xff0c;很多人都有些不知所措&#xff0c;如何选择适合自己兴趣爱好&#xff0c;又有良好就业前景的工作。从哪些方面…

RTthread+STM32F407ZGTx+烟雾报警检测+蜂鸣器报警+LED闪烁||使用RTthread Studio

目录 实验背景 1.安装环境 2.配置环境 3.先编译下载实例程序2&#xff0c;观察DS0是否闪烁 4.实验方法 5.实例代码 6.硬件连接 7.实验效果 8.关于这次开发遇到的问题 1.反应慢&#xff0c;都熄灭1分钟多了&#xff0c;才报的问题&#xff1f; 2.关于rt_pin_mode(KEY…

Linux 图形化编程GTK3.0 快速入门之布局

GTK3.0 布局之水平布局 核心语法&#xff1a; 水平布局容器&#xff1a; 水平布局容器的创建&#xff1a; GtkWidget *gtk_hbox_new( gboolean homogeneous, gint spacing ); homogeneous&#xff1a;容器内控件是否大小一致( gboolean 取值为TRUE 或 FALSE ) spacing&#…

什么是数字化,什么是数智化?数字化与数智化的区别和联系

什么是数字化&#xff1f;什么是数智化&#xff1f;以及数字化与数智化的区别&#xff0c;下面分为三块跟大家详细讲解。 一、什么是数字化&#xff1f; 1、概念&#xff1a; 数字化&#xff08;Digitalization&#xff09;是将信息转换为数字&#xff08;即计算机可读&#…

操作系统之如何使用C语言完成SFJ和SRTJ,并完成他的甘特图

目录 前言 SFJ SRTJ 结束语 前言 不知不觉已经写博客一个月了&#xff0c;前段时间因为学业上的一些原因咕咕咕了&#xff0c;今天我又回来了。今天我给大家带来的是C语言代码完成的SFJ和SRTJ&#xff0c;并且带大家描述他的甘特图。如果有对SFJ和SRTJ不了解的小伙伴可以翻…

windows anaconda 安装 Labelme

安装 # 创建环境 conda create -n labelme python3.6 #激活环境 conda activate labelme # 安装依赖 conda install pyqt conda install pillow # 安装labelme conda install labelme3.16.2 # 启动labelme labelme右键选择标注类型&#xff0c;从上到下为多边形&#xff08;常…

超声波清洗机哪个牌子好用点?四大卓越臻品不容错过!

选购超声波清洗机能为日常生活提供非常多的便利&#xff01;比如像是戴眼镜或者是有婴儿的家庭&#xff0c;使用超声波清洗机不仅能够帮助清洗需要清洗的物品&#xff0c;同时更能保证物品健康清洁&#xff0c;对清洗的物品进行杀菌灭菌&#xff01;相对于比较费时间并且容易损…

eclipse宝刀未老

Theia 是一个高度可定制的、开源的、基于 Web 的集成开发环境&#xff08;IDE&#xff09;框架。它由 Eclipse Foundation 主导&#xff0c;旨在为云和本地环境提供现代化的、全功能的 IDE 解决方案。Theia 的核心目标是提供一个灵活的平台&#xff0c;开发者可以根据自己的需求…

2005-2022年款福特福克斯维修手册和电路图线路图接线图资料更新

经过整理&#xff0c;2005-2022年款福特福克斯全系列已经更新至汽修帮手资料库内&#xff0c;覆盖市面上99%车型&#xff0c;包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对…

MaxWell实时监控Mysql并把数据写入到Kafka主题中

配置mysql 启用MySQL Binlog MySQL服务器的Binlog默认是未开启的&#xff0c;如需进行同步&#xff0c;需要先进行开启 修改MySQL配置文件/etc/my.cnf sudo vim/etc/my.cof 增加如下配置 注&#xff1a;MySQL Binlog模式 Statement-based&#xff1a;基于语句&#xff0c;…

定制化物联网设备:开启智能生活新篇章

随着科技的进步&#xff0c;物联网&#xff08;IoT&#xff09;已成为我们日常生活和工作中不可或缺的一部分。从智能家居到工业自动化&#xff0c;物联网设备以其独特的功能和特性&#xff0c;极大地提高了我们的生活质量和工作效率。然而&#xff0c;在众多的物联网设备中&am…

【深度解析】1688货源拿货价比拼多多贵?为何商家仍选1688

对电商卖家来说&#xff0c;首先需要解决的问题就是货源。 虽然知道1688是个大型综合性的货源平台&#xff0c;但很多卖家还是觉得1688上面的货源很贵&#xff0c;甚至在平台严查无货源的背景下&#xff0c;还是坚持从1688拿货。那么为什么有些拼多多的商品会比1688还便宜呢&a…