文档章节

华为云学院带你7天入门Redis(2)

 华为云学院
发布于 09/20 16:04
字数 1742
阅读 12
收藏 0

华为云学院带你7天入门Redis(2)

 

1、深度剖析memory

 Info是Redis提供的一个非常有用的查看状态信息的命令。使用 redis-cli 连上 Redis,输入 info all 命令,redis-server 就 会返回 Redis 的状态信息,详细内容如下:

其中 memory、stats、clients、keyspace 是 Redis 运行时经常要关注的信息,接下来我们重点对这四项进行解读。

对于 Redis 来说,内存是最重要的资源,所以本文首先介绍 Redis 内存状态信息怎么查看, 也就是 memory 这一项:

used_memory:Redis 分配器分配的内存量,也就是实际存储数据的内存总量 used_memory_human:以可读格式显示 used_memory

used_memory_rss:以操作系统的角度,显示 Redis 进程占用的总物理内存  used_memory_rss_human:以可读格式显示 used_memory_rss

mem_fragmentation_ratio:used_memory_rss /used_memory 比值,表示内存碎片率

used_memory 反映了当前 Redis 存储数据的内存使用情况,当内存使用率达到Redis 设置的 maxmemory 时,Redis 就会根据设置内存数据逐出策略,以不同的方式移除存储在内存中的数据。比如,如果设置的策略为 noeviction,那么 Redis 会直接返回错误提示。 mem_fragmentation_ratio 表示的内存碎片率,理解这一指标,对优化 Redis 实例的资源性能是非常重要的。内存碎片 率稍大于 1 是比较合理的范围,此时内存碎片率还比较低,同时也说明 Redis 没有发生 swap。但如果内存碎片率的值 超过了 1.5,那就说明Redis

消耗了实际需要物理内存的 150%,其中有 50%是内存碎片率,可以直接判定为Redis 内 存碎片过大。内存碎片率是不是越低就越好呢?答案是否定的。当内存碎片率低于 1 时,说明 Redis 内存分配超出了物理 内存,操作系统正在进行 swap,Redis 可能会把部分数据交换到硬盘上。swap 会严重影响 Redis 的性能,造成极大的延 迟。

2、Stats:全面理解 Redis 状

stats 可以统计 Redis 的基础信息,比如 Redis 的连接数、命令、网络、同步状态等非常重要的信息。下面介绍几个比较 重要的信息:

total_connections_received:连接过的客户端总数

total_commands_processed:处理过的命令总数

instantaneous_ops_per_sec:每秒处理的命令数

keyspace_hits:keyspace 命中次数

keyspace_misses:keyspace 未命中次数

rejected_connections:由于 maxclients 限制而拒绝的连接数量

expired_keys:key 过期事件的总数

evicted_keys:由于 maxmemory 限制,而被回收内存的 key 的总数

total_connections_received 和 total_commands_processed 反映了 Redis 服务器自从启动以来,所有处理过的连接数 和命令数。instantaneous_ops_per_sec 反应了 Redis 服务器的忙碌状态。当 rejected_connections 的值不为 0 时,说 明应用的连接数过多, 或者 maxclients 配置的太小。 对于应用来说, keyspace_hits 和 keyspace_misses 这两项指标是非常关键的。Redis 对其所有的命令都设置了专门的 标识属性,如“只读”,“写”或者“管理命令”之类,在 Redis 源码中,查看一下 redisCommand 结构体中 sflags 成 员属性字段,就可以知道这个命令是具有哪些属性。 比如,w 表示一个写命令(如 set,del 命令),r 表示是一个只读命令( get , hmget 命令), a 则表示一个管理命 令(config,shutdown) 。其中keyspace_hits 和 keyspace_misses 都是针对具备只读属性的 Redis 操作命令做统计,如果 info 统计出来的 keyspace_misses 值过高,或者在过去一段时间内增长很快,那么就说明这一段时间从 Redis 中获取数 据都没有拿到,这时也许就需要检查一下应用数据在Redis 中的存放和访问情况了。如果 key 在明确的时间周期内被使用, 或者旧的 key 将来可能不会被使用,就可以用 Redis 过期时间命令(expire,expireat, pexpire, pexpireat 等)去设置过期时 间,这样 Redis 就会在 key 过期时自动删除 key,这个信息可以通过expired_keys 去查看。当内存使用达到设置的最 大阀值 maxmemory 时,Redis 则会根据设置的 key 逐出策略,淘汰 Redis 中存储的数据,这个信息可以根据 evicted_keys 查看。

3、解读 Redis 连接数的意

clients 包含了连接数,输入输出缓冲和阻塞命令连接数等情况

connected_clients:客户端连接的数量

client_longest_output_list:当前的客户端连接之中最长的输出列表  client_biggest_input_buf:当前的客户端连接之中最大的输入缓冲区

blocked_clients:由于阻塞调用(BLPOP、BRPOP、BRPOPLPUSH)而等待的客户端的数量

连接数其实对于 Redis 来说可以看做是一种有限资源,一般 Redis 都配置有最大连接数限制 ,因此了解这个对于确保 应用正常连接也是相当重要的 。 client_longest_output_list 过高则很可能说明现在 Redis 出现了异常,可能要结合 clients list 来排查客户端连接情况。使用了阻塞命令时,blocked_clients 也需要重点关注。

4、Keyspace :了解数据状

Keyspace 主要提供关于每个 Redis 数据库的主字典的统计数据。这些统计数据包括键的数量、具有过期时间的 key 的 数量和平均生存时间。

对于每个数据库来说,keyspace 栏显示的每行信息格式如下所示: dbX: keys=X,expires=X,avg_ttl=X 其中,第一个 X 表示数据库的编号,第二个 X 表示键的数量,第三个 X 表示具有过期时间的键的数量,第四个 X 表示 键的平均生存时间。举个例子:db0:keys=6,expires=0,avg_ttl=0:这就表示当前数据库 0 的 key 总数有 6 个,带有 过期时间的 key 总数 0 个,平均存活时间为 0。

Redis Info 命令的其它信息,在这里也简要介绍一下:

server 栏:显示关于 Redis 服务器自身的一些信息, 如版本号, 操作系统, 端口等

Persistence 和replication :与数据库持久化和主备复制有关,cpu 反映了 Redis 服务器 CPU 使用信息, commandstas 是显示 Redis 所有命令执行的详细信息,包括命令调用次数、命令消耗的CPU 时间总量、 每次执行命令消耗 CPU 时间的平均值

 Cluster: 主要用来反应集群特性

以上内容出自于华为云学院(edu.huaweicloud.com),想要继续学习,欢迎登陆云学院,站内搜索“redis”即可获得免费视频课程。

© 著作权归作者所有

粉丝 0
博文 77
码字总数 98537
作品 0
深圳
私信 提问
数据库入门之RDS与各组件搭配

数据库入门之RDS与各组件搭配 今天给大家介绍一下华为云数据库与各服务如何搭配使用的。 首先让我们来看一下RDS的整体架构图: 用户登录华为云官网以后,通过RDS Console来下发各种动作。以创...

华为云学院
2018/12/28
0
0
深度学习与自动驾驶 - MIT出品

这门自动驾驶课程由麻省理工MIT开设,话题前沿且实践性质很强。课程面向机器学习初学者,但已经有大量经验的研究人员也能从课程提供的从实践出发的深度学习方法和应用中受益。 免费课程链接:...

mcy0425
2018/03/22
35
0
51CTO学院新课发布~~带你遇见更好的自己(十一)(2017.11.25-12.31)

元旦3天可以说是过的非常快了,大部分的同学们都回家跨年了,小编姐姐本来已经买了李志的“相信未来”南京跨年演唱会的票,苦于没人陪我去,最后硬是活活被朋友拉去长沙跑了个马拉松。话说本...

51CTO学院
2018/01/04
0
0
JavaScript自学手册文档教程

教程链接:JavaScript自学手册文档教程 javascript只需知道其能处理哪些东西: 1:操作控件 2:子窗口,父窗口,模式窗口 3:内置函数和对象,String相关的处理函数,Math对象(包括常用数学...

mcy0425
2018/06/07
21
0
云数据库 Redis 版功能特性

关于云数据库 Redis 版详细了解: 云数据库 Redis 版使用教程 (云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高...

mcy0425
2018/03/02
29
0

没有更多内容

加载失败,请刷新页面

加载更多

字节序转换详解

在跨平台和网络编程中我们经常会提到网络字节序和主机字节序,如果没有正确对两者进行转换,从而导致两方产生了不同的解释,就会出现意想不到的bug。 目录 0x01 概念 0x02 分类 0x03 两种字节...

无心的梦呓
20分钟前
4
0
干货 | AI人脸识别之人脸搜索

本文档将利用京东云AI SDK来实践人脸识别中的人脸搜索功能,主要涉及到分组创建/删除、分组列表获取、人脸创建/删除、人脸搜索,本次实操的最终效果是:创建一个人脸库,拿一张图片在人脸库中...

京东云技术新知
25分钟前
4
0
【swiper】 滑块组件说明

本文转载于:专业的前端网站➣【swiper】 滑块组件说明 swiper 滑块视图容器,其原型如下: 1 <swiper 2 indicator-dots="[Boolean]" 3 indicator-color="[Color]" 4 indicator-act......

前端老手
35分钟前
4
0
堆排序算法

《Java算法总纲目录》 1、定义 由下图(网上找的),堆排序类似这种,把最大的数字放到最下面的最右面位置,然后把第二大的数字放到最下层的最右面倒数第二个位置,依此类推,如下: 2、代码...

木九天
37分钟前
5
0
框架和库的区别

框架和库的区别 框架:是一套完整的解决方案;对项目的侵入性较大,项目如果需要更换框架,则需要重新架构整个项目。 node 中的 express; 库(插件):提供某一个小功能,对项目的侵入性较小...

庭前云落
41分钟前
5
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部