Redis 线程、持久化和监控

news2024/12/27 0:47:06

Redis 线程、持久化和监控

Redis线程模型

Redis主线程模型

图1 Redis 6.0之前的主线程模型

    IO多路复用程序指的是单个线程监听多个套接字连接(Socket),当IO多路复用程序将多个Socket上的就绪事件放置于队列中, Redis主线程一次处理队列中事件,事件类型包括命令请求处理器(读取客户端发送指令,执行指令逻辑),命令回复处理器(向客户端发送响应),连接应答处理器(同客户端建立连接)。

    Redis 使用单主线程原因(官方回应):

  1. 在使用 Redis 时,Redis 主要受限是在内存和网络上,CPU 几乎没有性能瓶颈的问题。
  2. 以Linux 系统为例子,在Linux系统上Redis 通过 pipelining 可以处理 100w 个请求每秒,而应用程序的计算复杂度主要是 O(N) 或 O(log(N)) ,不会消耗太多 CPU。
  3. 使用了单线程后,提高了可维护性。多线程模型在某些方面表现优异,却增加了程序执行顺序的不确定性,并且带来了并发读写的一系列问题,增加了系统复杂度。同时因为线程切换、加解锁,甚至死锁,造成一定的性能损耗。
  4. Redis 通过 AE 事件模型以及 IO 多路复用等技术,拥有超高的处理性能,因此没有使用多线程的必要。

IO线程组模型

    随着硬件的发展,单个线程处理网络读写的速度跟不上底层网络硬件的速度。Redis引入了IO线程组来使用多线程处理IO读写事件,而命令执行依然是在单主线程中执行。

 

图2 主线程+IO线程组模型

后台线程

    Redis主线程执行命令处理、Key过期删除、rehash等操作,还存在以下后台进程:

  1. BIO_CLOSE_FILE:关闭文件,负责释放套接字
  2. BIO_AOF_FSYNC:异步持久化aof文件。
  3. BIO_LAZY_FREE:内存空间的懒释放(针对前期删除仅仅删除引用,并不释放空间)

Redis 持久化

Redis 在备份时会独立创建一个子进程,将数据写入到一个临时文件(此时内存中的数据是原来的两倍哦),最后再将临时文件替换之前的备份文件。Redis的持久化建议都开启RDB和AOF模式。RDB用于数据备份,作为最后备份手段。

RDB模式

RDB 是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。

    以下情况会触发RDB:

    1 在指定的时间间隔内,执行指定次数的写操作

2 执行save(阻塞, 只管保存快照,其他的等待) 或者是bgsave (异步)命令

3 执行flushall 命令,清空数据库所有数据,意义不大。

4 执行shutdown 命令,保证服务器正常关闭且不丢失任何数据。

AOP模式

AOF :默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

Redis 监控

slowlog

         配置(config set/get):

slowlog-log-slower-than:  慢查询阈值     

slowlog-max-len: 慢查询最多保存条数

config get slowlog-log-slower-than:  获取慢查询阈值

查看慢查询:Slowlog get 10: 获取前n条慢查询

返回结果:

  1. 唯一标识
  2. 记录时间
  3. 查询耗时,单位微妙
  4. 执行命令

Slowlog len: 当前日记总量

Slowlog reset:清除日记

OPS:Operations Per Second

         Info stats返回的instantaneous_ops_per_sec字段

        

命中率

         Info stats 获取命中次数和未命中次数计算命中率

HitRate=keyspace_hits/(keyspace_hits+keyspace_misses)

        

内存情况

    Info memory 命令查看Redis内存状态。如 used_memory: 使用内存。

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

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

相关文章

Codeforces Round 908 (Div. 2)题解

目录 A. Secret Sport 题目分析: B. Two Out of Three 题目分析: C. Anonymous Informant 题目分析: A. Secret Sport 题目分析: A,B一共打n场比赛,输入一个字符串由A和‘B’组成代表A赢或者B赢(无平局),因为题目说明这个人…

玩一玩MySQL8.0.35

文章目录 1 下载MySQL2 安装MySQL2.1 选择安装类型2.2 安装组件2.3 产品配置3 启动MySQL Shell4 使用MySQL Workbench4.1 创建数据库连接4.2 查看数据库列表4.3 创建数据库vue4.4 将csv导入数据库4.5 查看导入的表1 下载MySQL 网址:https://dev.mysql.com/downloads/installer…

Ansible优化大全

文章目录 一、关闭系统信息收集二、开启加速 Ansible 执行速度修改配置文件/etc/ansible/ansible.cfg由于该功能与sudo冲突,必须关闭 requiretty 选项方法一方法二 参考文章: https://blog.csdn.net/o0o0o0D/article/details/110998873 一、关闭系统信息…

【C#枚举 Enum】

C#枚举 Enum 一、枚举 1、枚举是将变量的值罗列出来,变量的值只限于列举出来的值的范围。 2、枚举使用enum关键字来声明,与类同级。枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符。枚举本身的修饰符仅能使用public和int…

java项目之个人健康信息管理(ssm+jsp)

项目简介 个人健康信息管理实现了以下功能: 管理员:首页、个人中心、用户管理、医师管理、饮食记录管理、运动记录管理、健康信息管理、健康评估管理、健康知识管理、系统管理。用户:首页、个人中心、饮食记录管理、运动记录管理、健康信息…

3D全景技术,为我们打开全新宣传领域

随着科技的发展,3D全景技术正在融入我们的生活,这种全新视觉体验方式为我们打开了一扇全新的宣传领域,可以让我们多方位、多视角地探索各个行业,无论是对教育、商业、还是其他领域,都产生了深远的影响。 3D全景技术结合…

QTabBar实验

目的: 研究QTabBar::currentChanged与QTabBar::tabBarClicked这两个信号的触发条件。 现象: 最开始时,信号都未被触发。 当点击标签时,两个信号都被触发,如下图: 而使用 tab_bar->setCurrentIndex(…

领导说,效率越高的人,越擅长数据可视化

领导说效率越高的人,就越擅长数据可视化,因为他们总能找到操作简单、指标计算又快又准、分析效率极高的数据可视化工具,比如说奥威BI数据可视化工具。 奥威BI数据可视化工具,集齐一个高效BI数据可视化工具的五大使用优点&#xf…

Unix环境高级编程-学习-02-进程环境之进程终止、命令行参数、环境表、C程序的存储空间布局

目录 一、环境信息 二、声明 三、进程终止 1、情况分类 2、退出函数 3、退出实验 (1)main声明int和调用return值 (2)main声明int和不调用return (3)main声明不int和不调用return 4、atexit 5、at…

chrome安装vue devtools

不能访问应用商店 如果可以访问应用商店可以往下看 插件源代码 选择shell-chrome,这是官方的插件源码 下载源代码打包 参考教程 点击扩展按钮->管理扩展程序->打开开发者模式->把crx文件拖拽进去即可 可以访问chrome应用商店 插件地址 官方文档地址 选…

浅谈开源策略的实例:CGAL计算几何库

免责声明:本博客旨在分享我对开源策略的理解和体会,不代表任何组织或机构的立场或观点,也不构成任何商业或投资的建议或担保。本博客的内容可能存在错误或遗漏,也可能随着时间的推移而变得过时或不适用。请在使用或依赖本博客的内…

十四、W5100S/W5500+RP2040树莓派Pico<NetBIOS>

文章目录 1 前言2 简介2 .1 什么是NetBIOS?2.2 NetBIOS的优点2.3 NetBIOS工作原理2.4 NetBIOS应用场景 3 WIZnet以太网芯片4 NetBIOS网络设置示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前言 随着…

Android14前台服务适配指南

Android14前台服务适配指南 Android 10引入了android:foregroundServiceType属性,用于帮助开发者更有目的地定义前台服务。这个属性在Android 14中被强制要求,必须指定适当的前台服务类型。以下是可选择的前台服务类型: camera: 相机应用。…

antd-vue + vue3 实现a-table动态增减行,通过a-from实现a-table行内输入验证

一、效果图 图一:校验效果 二、主要代码 注意: 1、form 与 table 绑定的是同一个数据 tableSource 并且是一个数据(ElementUI 需要 对象包数组) 2、form用的是 name 绑定 -> :name"[index, vlan_id]" 3、form-i…

MES管理系统中常规的生产建模有哪些

随着制造业的快速发展,MES生产管理系统已经成为了现代制造业不可或缺的核心系统。MES通过对生产过程进行建模,实现了生产过程的可视化、可控制和可优化,为企业提供了全方位的生产管理解决方案。本文将深化对MES管理系统及其主要生产模型的理解…

React构建组件的方式有哪些?区别?

一、是什么 组件就是把图形、非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式 在React中,一个类、一个函数都可以视为一个组件 在之前文章中,我们了解到组件所存在的优势: 降低整个系统的耦合度&am…

大功率继电器 UEG/F-4DPDT EDP01-RDI/1抗干扰型 轨道继电器 josef约瑟

UEG/F系列抗干扰型中间继电器电力系统和工业自动化的装置中,明确而可靠的信号护展和电隔离技术变得日益重要.UEG/F系列抗干扰继电器应用在电力系统及工业控制领域中,用于外界干扰较大的接点信号的重动、采集。 系列型号 UEG/F-2H2D抗干扰中间继电器;UEG/F-1H1D抗干扰中间继电器…

中国电子学会2023年09月份青少年软件编程Scratch图形化等级考试试卷四级真题(含答案)

2023-09 Scratch四级真题 分数:100 题数:24 测试时长:60min 一、单选题(共10题,共30分) 1.角色为一个紫色圆圈,运行程序后,舞台上的图案是?(A )(3分) A. B. C. …

【云栖2023】林伟:大数据AI一体化的解读

本文根据2023云栖大会演讲实录整理而成,演讲信息如下: 演讲人:林伟 | 阿里云研究员,阿里云计算平台事业部首席架构师,阿里云人工智能平台PAI和大数据开发治理平台DataWorks负责人 演讲主题:大数据AI一体化…

dart中字符串的常用操作方法函数,和python有点像

在开发语言中,字符串操作可谓是非常的多,所以需要记住很多字符串这类的相关函数和方法,至少最常用的几种是要记住的:切分,包含,查找,是否以XX开头等等 void run() {var str1 "你好&#…