Redis中的单线程高性能原因和其他高级命令

单线程

Redis是单线程吗?

Redis的单线程主要是指Redis的网络IO和键值对读写是由一个线程来完成的,这也是
Redis对外提供键值存储的主要流程。但Redis的其他功能,比如持久化、异步删除、
集群数据同步等,其实是由额外的线程执行的

Redis单线程为什么还能这么块?

因为它所有的数据都在内存中,所有的运算都是内存级别的运算,而且单线程避免了
多线程的切换性能损耗问题。正因为Redis是单线程,所以要小心使用Redis指令,对于
那些耗时的指令(比如keys *)一定要谨慎使用,一不小心就可能会导致Redis卡顿

Redis单线程如何处理那么多的并发客户端连接?

Redis的IO多路复用:redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,
依次放到文件事件分派器,事件分派器将事件分发给事件处理器
#查看Redis支持最大连接数,在redis.conf文件中可修改 # maxclients 100000

CONFIG GET maxclients

在这里插入图片描述
在这里插入图片描述

keys:全量遍历。

用来列出所有满足特定正则字符串规则的key,当redis数量比较大时,性能比较查,要避免使用
在这里插入图片描述

scan:渐进式遍历键

SCAN cursor [MATCH pattern] [COUNT count]

参数解析

scan参数提供了三个参数,
第一个是cursor整数值(hash桶的索引值),
第二个是key的正则模式,
第三个是一次遍历的key的数量(参考值,底层遍历的数量不一定),并不是符合条件的结果数量。第一次遍历时,cursor值为0,然后将返回结果中第一个整数值作为下一次遍历的cursor.一直遍历到返回的cursor值为0时结束。

注意事项

注意:但是scan并非完美无瑕,如果在scan的过程中如果有键的变化(增加、删除、修改),那么遍历效果可能会碰到如下问题:新增的键可能没有遍历到,遍历出了重复的键等情况,也就是说scan并不能保证完整地遍历出来所有的键。

info:查看redis服务运行信息,分为9大块,每个块都有非常多的参数。

Server服务器运行的环境参数

在这里插入图片描述

Clients客户端相关信息

在这里插入图片描述

Memory服务器运行内存统计数据

在这里插入图片描述

Persistence持久化信息

在这里插入图片描述

Stats通用统计数据

在这里插入图片描述

Replication主从复制相关信息

在这里插入图片描述

CPU CPU使用情况

在这里插入图片描述

Cluster集群信息

在这里插入图片描述

KeySpace键值对统计数量信息

在这里插入图片描述

常用参数

connected_clients #正在连接的客户端数量

instantaneous_ops_per_sec #每秒执行多少指令

used_memory

  • 含义:Redis分配的内存总量(byte),包含redis进程内部的开销和数据占用的内存
  • 衡量标准:此指标包括Redis分配的所有内存,但不考虑该内存是否被操作系统回收,因此它表示Redis分配的总内存大小,而不一定是实际占用的内存

used_memory_human #Redis分配的内存总量(Kb,human会展示出单位)

used_memory_rss_human

  • 含义:表示Redis进程实际使用的物理内存(Resident Set Size)包括了被分配但未使用的内存和共享的库和数据
  • 衡量标准:该指标考虑了Redis进程实际占用的内存,包括了数据、缓存、连接等,以及被操作系统回收但仍保留在内存中的部分,这提供了一个更准确的关于Redis实际内存占用的视图
  • 区别:在一些情况下,used_memory_rss可能会比used_memory大,因为它包含了未使用的内存和被操作系统回收但仍然在内存中的部分,其他情况下,它们可能非常接近,具体取决于Redis实例的工作负载和操作系统的内存管理。这两个指标都可以用于监控Redis的内存使用情况,但used_memory_rss提供了更接近实际占用的内存的信息

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud 面试题及答案整理,最新面试题

Spring Cloud中断路器的原理及其作用是什么? Spring Cloud断路器的原理和作用基于以下几个关键点: 1、故障隔离机制: 在微服务架构中,断路器作为一种故障隔离机制,当某个服务实例出现问题时,断路器会“断…

紫光展锐携手中兴通讯成功完成业界首个5G N102芯网一体方案联调

近日,紫光展锐携手中兴通讯成功完成业界首个5G N102频段的芯网一体方案联调,包括5G NR数据呼叫、时延和峰值速率测试等用例。这是双方在5G产品和研发方面取得的重大创新成果,为推动N102频段在5G行业的应用奠定了坚实基础。 3GPP定义的N102频段…

软件测试 - 测试用例基本理论

1. 概念 为了特定的目的(该目的是检验代码是否满足用户需求)而设计的文档,文档包含测试输入、执行条件、预期结果等。文档的形式一般是excel表格。 比如说我们买了一台电脑,新买的笔记本检查完外观之后第一步需要查看电脑是否能够正常开机,…

用Python爬取古诗文网的各类古诗

fetch-gushiwen 用途 可以拿去用于个人知识库、知识图谱的创建等其他学习用途。 使用 输入古诗文网的链接,即可爬取该页面所有诗歌的诗名,作者,朝代,内容,译文,注释,赏析,创作背…

MySQL 缓存策略

MySQL 缓存方案用来干什么 ? 缓存用户定义的热点数据,用户直接从缓存中获取热点数据,降低数据的读写压力。场景分析 内存访问速度是磁盘访问速度的 10 万倍。读的需求远远大于写的需求MySQL 自身缓冲层跟业务无关。MySQL 作为项目主要数据库&#xff0…

P5076 【深基16.例7】普通二叉树(简化版)题解

题目 您需要写一种数据结构,来维护一些数(都是绝对值以内的数)的集合,最开始时集合是空的。其中需要提供以下操作,操作次数q不超过: 定义数x的排名为集合中小于x的数的个数1。查询数x的排名。注意x不一定…

【ICM】好奇心机制

文章目录 样本经验处理降低图片像素和通道构建连续状态捕捉动作经验回放类 各部分的模型编码器模型反向模型正向模型DQN模型ICM 的 反向传播 概念补充强化学习组成元素按照学习目标来分按照策略更新方式区分强化学习on-line 与 off-line经验回放 全部代码 样本经验处理 降低图…

什么是物联网?物联网如何工作?

物联网到底是什么? 物联网(Internet of Things,IoT)的概念最早于1999年被提出,官方解释为“万物相连的互联网”,是在互联网基础上延伸和扩展,将各种信息传感设备与网络结合起来而形成的一个巨大网络,可以实…

无法启动报,To install it, you can run: npm install --save @/components/iFrame/index

运行的过程中后台报错 npm install --save /components/iFrame/index,以为是安装三方依赖错误,经过多次重装node_modules依然没有用。 没办法,只能在项目中搜索 components/iFrame/index这个文件。。突然醒悟。。。 有时候,犯迷…

MySQL面试题【全面】2024

基础内容 1、MySQL的架构分层 (1)Serve层:负责建立连接、分析和执行 SQL。 MySQL 大多数的核心功能模块都在这实现,主要包括连接器,查询缓存、解析器、预处理器、优化器、执行器等。另外,所有的内置函数&…

详解C#之WinForm版利用RichTextBox 制作文本编辑器【附源码】

在Windows应用程序开发中,刚刚介绍了WPF版的利用RichTextBox实现文本编辑器,今天继续推出WinForm版的利用RichTextBox实现文本编辑器。本文利用一个简单的小例子,简述如何在WinForm开发中,利用RichTextBox开发文本编辑器&#xff…

Spring中@import注解终极揭秘!

技术概念 它能干啥 Import注解在Spring框架中主要用于解决模块化和配置管理方面的技术问题,它可以帮助开发者实现以下几个目标: 模块化配置:在大型项目中,通常需要将配置信息分散到多个配置类中,以便更好地组织和管…

C++面试干货---带你梳理常考的面试题(二)

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 1.struct 和 class 区别 1.默认访问权限:struct中的成员默认为public,而class中的成员默认为priv…

力扣404 左叶子之和 Java版本

文章目录 题目描述解题思路代码 题目描述 给定二叉树的根节点 root ,返回所有左叶子之和。 示例 1: 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 2…

二手手机管理系统|基于Springboot的二手手机管理系统设计与实现(源码+数据库+文档)

二手手机管理系统目录 目录 基于Springboot的二手手机管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户管理功能的实现界面 2、用户中心管理功能的实现界面 3、新闻信息管理功能的实现界面 4、商品收藏管理功能的实现界面 5、订单管理功能的实现界…

2024年3月6日 十二生肖 今日运势

小运播报:2024年3月6日,星期三,农历正月廿六 (甲辰年丁卯月己巳日),法定工作日。 红榜生肖:牛、猴、鸡 需要注意:鼠、虎、猪 喜神方位:东北方 财神方位:正…

【pyinstaller打包记录】Windows系统打包exe后,onnxruntime报警告(Init provider bridge failed)

简介 PyInstaller 是一个用于将 Python 程序打包成可执行文件(可执行程序)的工具。它能够将 Python 代码和其相关的依赖项(包括 Python 解释器、依赖的模块、库文件等)打包成一个独立的可执行文件,方便在不同环境中运行…

【Java设计模式】五、建造者模式

文章目录 1、建造者模式2、案例:共享单车的创建3、其他用途 1、建造者模式 某个对象的构建复杂将复杂的对象的创建 和 属性赋值所分离,使得同样的构建过程可以创建不同的表示建造的过程和细节调用者不需要知道,只需要通过构建者去进行操作 …

【SpringBoot3.x教程 01】SpringBoot简介及工程搭建

前言:什么是SpringBoot? SpringBoot是一个开源的Java基础框架,它被设计来简化Spring应用的初始搭建以及开发过程。这个框架利用了“约定优于配置”的理念,提供了一系列大型项目中常用的默认配置,让开发者可以快速启动和…

kafka查看消息两种方式(命令行和软件)+另附发送消息方式

1、命令行方式 ①找到kafka安装文件夹 ②执行命令 #指定offset为指定时间作为消息起始位置 kafka-consumer-groups.sh \ --bootstrap-server 20.2.246.116:9092 \ --group group_1 \ --topic lanxin_qiao \ --reset-offsets \ --to-datetime 2023-07-19T01:00:00.000 \ -exe…
最新文章