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.mzph.cn/news/722654.shtml

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

相关文章

小米澎湃和华为原生鸿蒙,那个更有发展前景?

小米的澎湃系统暂时不了解,但华为的鸿蒙系统值得一说。 就目前鸿蒙而言;24年初鸿蒙星河版面向开发者开放申请。其底座全线自研,去掉了传统的 Linux 内核以及 AOSP 安卓开放源代码项目等代码,仅支持鸿蒙内核和鸿蒙系统的应用。星河…

【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(一)-向量扩展编程模型

1. 引言 以下是《riscv-v-spec-1.0.pdf》文档的关键内容: 这是一份关于向量扩展的详细技术文档,内容覆盖了向量指令集的多个关键方面,如向量寄存器状态映射、向量指令格式、向量加载和存储操作、向量内存对齐约束、向量内存一致性模型、向量…

我的第②个出海工具站 - 2024年50个出海工具站计划

为了大家更好的使用各种出海工具。我上线了一版 出海工具导航 站点,经常使用的可以收藏下,我文内使用的网站都集成在了这里,非常使用。 随着AIGC的到来,2024年到了海外工具回暖的一年。今年计划上线50款出海工具站计划&#xff0c…

激光炸弹 刷题笔记

前置知识 二维前缀和 子矩阵的和 刷题笔记 {二维前缀和}-CSDN博客 思路 参考二维前缀和 将子矩阵的和 做成动态矩阵 一个个矩阵搜索 符合要求边长 矩阵中的元素和最大值 将x1,y1用i-k,j-k表示即可 x2,y2用i&#xff0c;j表示 代码 #include<iostream> #include<…

MongoDB获评2023年Gartner®云数据库管理系统“领导者”

MongoDB 很荣幸在《2023 年 Gartner 云数据库管理系统 (CDBMS) 魔力象限》报告中被评为领导者。我们相信这一成就让 MongoDB 成为唯一一家连续两年斩获“领导者”称号的纯应用程序数据库服务提供商。 社区及开发者数据平台用户的需求一向是 MongoDB 关注的重点&#xff0c;而这…

tomcat 搭建博客 及破解数据库密码

一 tomcat 搭建博客 &#xff08;一&#xff09;博客安装包 1&#xff0c; 把博客war包 放到 webapps 文件夹下 2&#xff0c;会自动解压 3&#xff0c;做个软连接 方便后续操作 可以注意到 因为war包 是又tomcat 自己解压的 所以属主数组还是 tomcat &#xff08…

基于springboot+vue的多媒体素材库的开发与应用系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

静态时序分析:SDC约束命令set_disable_timing详解

静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html 目录 指定对象列表 指定源、目的引脚 指定恢复 简单使用 写在最后 上一章中&#xff0c;我们学习了如何使用set_case_analysis模式分析命令&#xff0c;它通过指定某个端口或引脚为固定值&…

代码随想录第50天|● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV

文章目录 ● 123.买卖股票的最佳时机III思路代码一&#xff1a;dp二维数组代码二&#xff1a;四个数存储 ● 188.买卖股票的最佳时机IV思路&#xff1a;代码&#xff1a; ● 123.买卖股票的最佳时机III 思路 dp[i][j]中 i表示第i天&#xff0c;j为 [0 - 4] 五个状态&#xff0…

MathType玩耍指南

ML论文里特别多公式&#xff0c;里面有各种奇奇怪怪符号&#xff0c;怎么打出来呢&#xff1f; 认识这个符号&#xff0c;直接搜索 比如认识上面那个indicator function是个I&#xff0c;有时候是1&#xff0c;那么就搜索mathtype怎么打印双线符号这样的&#xff1b; 不认识…

git遇到的报错

这是小编在gits所遇到的报错集合&#xff0c;可能不会包含大家的报错信息但是咱们可以在评论区留言共同收集git的报错信息以及解决方法&#xff01; SSL证书问题 解决办法&#xff1a;git命令下运行 git config --global http.sslVerify false 然后再进行重新clone代码 Git应…

美易官方《盘前:美国股指期货温和走低》

美国股指期货在盘前交易中温和走低&#xff0c;市场情绪在美联储主席鲍威尔即将作证前显得谨慎。投资者对即将公布的证词内容充满期待&#xff0c;以寻求对美联储未来货币政策的更多线索。 鲍威尔即将在国会作证&#xff0c;这是市场关注的焦点事件之一。他的证词可能会对美元汇…

信钰证券|昨夜,“金龙”大涨

当地时间2月27日&#xff0c;我国资产自开盘一路走高&#xff0c;抢手中概股普涨&#xff0c;纳斯达克我国金龙指数涨2.10%。其中&#xff0c;抱负轿车涨超11%&#xff0c;网易涨超5%&#xff0c;爱奇艺、微博涨超4%。 美股方面&#xff0c;三大指数涨跌纷歧。到收盘&#xff…

【ArcPy】游标访问几何数据

访问质心坐标相关数据 结果展示 代码 import arcpy shppath r"C:\Users\admin\Desktop\excelfile\a2.shp" with arcpy.da.SearchCursor(shppath, ["SHAPE","SHAPEXY","SHAPETRUECENTROID","SHAPEX","SHAPEY",&q…

MongoDB Helloworld For Window

1. 下载MongoDB Download MongoDB Community Server | MongoDB 2. 安装MongoDB 3. 创建DB. 4. 用java code 连接mongo. 做增删改查操作。 pom.xml <dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver-sync</artifactId>&…

初次实战SQL注入

目录 1.判断漏洞是否存在 2.判断注入类型&#xff08;数字型/字符型&#xff09; 3.猜列数 4.联合查询判断回显位 6.获取数据库表明 此实验为本人学习内容&#xff0c;从未攻击任何网站&#xff01;&#xff01;&#xff01;请伙伴们同样遵纪守法&#xff01;&#xff01;…

一个复杂的数据流转换:文件流转base64

一个复杂的数据流转换&#xff1a;文件流转base64 可是我再也没遇到一个像福贵这样令我难忘的人了&#xff0c;对自己的经历如此清楚&#xff0c;又能如此精彩地讲述自己是如何衰老的。这样的老人在乡间实在是 难以遇上&#xff0c;也许是困苦的生活损坏了他们的记忆&#xff0…

线程池知识点总结

线程池 池化思想&#xff1a;线程池、字符串常量池、数据库连接池 提高资源的利用率 手动创建线程执行任务执行完毕、释放对象 预先创建多个线程对象&#xff0c;放入缓冲池中 优点&#xff1a; 提高线程的利用率提高程序响应速度&#xff08;因为线程对象是提前创建好的…

内存溢出(OOM)-汇总指南

目录 java.lang.OutOfMemoryError:Java heap space 原因分析 示例 解决方案 java.lang.OutOfMemoryError:GC overhead limit exceeded 原因分析 示例 解决方案 java.lang.OutOfMemoryError:Permgen space 原因分析 示例 解决方案 java.lang.OutOfMemoryError:Metas…

(vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)

(vue)el-checkbox 实现展示区分 label 和 value&#xff08;展示值与选中获取值需不同&#xff09; 后端数据 解决方法 在 el-checkbox 标签中间传入要展示的文本即可&#xff0c;代码如下&#xff1a; <el-checkbox-groupv-model"formInline.processFieldList"…