Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令

Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令

文章目录

  • Redis运维和开发学习笔记(6) 监控Redis工作状态-info命令
    • info server
    • info client
    • info memory
    • info persistence
    • info stats
    • info commandstats
    • info cpu
    • info cluster
    • info keyspace

info server

Redis服务器相关的通用信息

127.0.0.1:6379> info server
# Server
redis_version:3.2.12  # Redis服务器的版本号。
redis_git_sha1:00000000  # Git SHA1。
redis_git_dirty:0  # GIT脏数据标志
redis_build_id:7897e7d0e13773f 
redis_mode:standalone
os:Linux 3.10.0-957.21.3.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll # Redis使用的事件循环机制。
gcc_version:4.8.5
process_id:29581  # Redis服务器进程的进程号(PID)。
run_id:3739b19f38ecf64bac40b2b7704d799573f2d6c6 # 用于标识Redis服务器的随机值(Redis的哨兵模式和集群模式会使用这个随机值)。
tcp_port:6379 # TCP/IP的监听端口。
uptime_in_seconds:2226082 # Redis服务器启动至今的时间,以秒为单位。
uptime_in_days:25 # Redis服务器启动至今的时间,以天为单位。
hz:10
lru_clock:5319706 # 每分钟都会递增的时钟,用于LRU(Least Recently Used,最近最少使用)缓存管理。
executable:/root/redis-server # Redis服务器的可执行文件的路径。
config_file:/etc/redis.conf # Redis服务器的配置文件的路径。

info client

127.0.0.1:6379> info clients
# Clients
connected_clients:1 # 客户端连接的数量(来自从机的连接除外)
client_longest_output_list:0 # 当前的客户端连接之中,最长的输出列表
client_biggest_input_buf:0 # 当前的客户端连接之中,最大的输入缓冲区
blocked_clients:0 # 由于阻塞调用(BLPOP、BRPOP、BRPOPLPUSH)而等待的客户端的数量。

info memory

127.0.0.1:6379> info memory
# Memory
used_memory:812544 # Redis使用它的内存分配器(可以是标准的libc、jemalloc或tcmalloc分配器)分配的内存总量,以字节为单位。
used_memory_human:793.50K # Redis使用它的内存分配器分配的内存总量,显示为用户易于阅读的格式。
used_memory_rss:2146304 # 操作系统所看到的为Redis分配的内存总量(也被称为“驻留集大小(Resident Set Size)”)。这个内存总量是由诸如top(1)ps(1)之类的工具报告的。
used_memory_rss_human:2.05M  # 操作系统所看到的为Redis分配的内存总量,显示为用户易于阅读的格式。
used_memory_peak:813552 # Redis消耗的内存峰值,以字节为单位。
used_memory_peak_human:794.48K # Redis消耗的内存峰值,显示为用户易于阅读的格式。
total_system_memory:1927405568 # 系统内存总量,以字节为单位
total_system_memory_human:1.80G # 系统内存总量,显示为用户易于阅读的格式
used_memory_lua:37888 # Lua脚本引擎使用的内存总量,以字节为单位。
used_memory_lua_human:37.00K # Lua脚本引擎使用的内存总量,显示为用户易于阅读的格式。
maxmemory:0 # Redis能够使用的最大内存上限(0表示没有限制),以字节为单位。
maxmemory_human:0B # Redis能够使用的最大内存上限,显示为用户易于阅读的格式。
maxmemory_policy:noeviction # Redis使用的内存回收策略,可以是noeviction、allkeys-lru、volatile-lru、allkeys-random、volatile-random或volatile-ttl。
mem_fragmentation_ratio:2.64 # used_memory_rss和used_memory之间的比率。
mem_allocator:jemalloc-3.6.0 # Redis使用的内存分配器,在编译时选择指定。

在理想情况下,used_memory_rss的值只应当比used_memory的值稍微高一点。当常驻集内存(rss)远大于已使用内存(used)时,这就意味着Redis服务器存在较多的内存碎片(内部的或外部的),这种情况可以通过检查mem_fragmentation_ratio的值估计出来。当已使用内存(used)远大于常驻集内存(rss)时,这就意味着有一部分Redis使用的内存被操作系统换出至磁盘了:可以预料到会产生明显的延时。
因为,Redis无法控制如何将它分配的内存映射至内存页面,当内存使用率飙升时,经常会导致较高的used_memory_rss值。
当Redis释放内存时,会将内存归还给分配器,然后分配器可能会(也可能不会)将内存归还给操作系统。used_memory的值和操作系统报告的内存消耗值可能会有一些差异。这可能是由于Redis正在使用和释放内存,但是释放的内存尚未归还给操作系统而导致的。通常,可以通过used_memory_peak的值来检查Redis是否存在这种问题。

info persistence

127.0.0.1:6379> info persistence
# Persistence
loading:表示Redis是否正在加载一个转储文件的标志。
rdb_changes_since_last_save:从最近一次转储至今,RDB的修改次数。
rdb_bgsave_in_progress:表示Redis正在保存RDB的标志。
rdb_last_save_time:最近一次成功保存RDB的时间戳,基于Epoch时间。
rdb_last_bgsave_status:最近一次RDB保存操作的状态。
rdb_last_bgsave_time_sec:最近一次RDB保存操作消耗的时间,以秒为单位。
rdb_current_bgsave_time_sec:如果Redis正在执行RDB保存操作,那么这个字段表示已经消耗的时间,以秒为单位。
aof_enabled:表示Redis是否启用AOF日志功能的标志。
aof_rewrite_in_progress:表示Redis是否正在执行一次AOF重写操作的标志。
aof_rewrite_scheduled:表示一旦Redis正在执行的RDB保存操作完成之后,是否就会调度执行AOF重写操作的标志。
aof_last_rewrite_time_sec:最近一次AOF重写操作消耗的时间,以秒为单位。
aof_current_rewrite_time_sec:如果Redis正在执行AOF重写操作,那么这个字段表示已经消耗的时间,以秒为单位。
aof_last_bgrewrite_status:ok:最近一次AOF重写操作的状态。
aof_last_write_status:ok
  • 如果启用了AOF功能,那么persistence分段将会新增额外的字段,如下所示:
aof_current_size:AOF文件当前的大小。aof_base_size:最近一次启动或重写时的AOF文件的大小。aof_pending_rewrite:表示一旦Redis正在执行的RDB保存操作完成之后,是否就会调度执行AOF重写操作的标志。aof_buffer_length:AOF缓冲区的大小。aof_rewrite_buffer_length:AOF重写缓冲区的大小。aof_pending_bio_fsync:表示后台I/O队列中的fsync的暂停任务。aof_delayed_fsync:被延迟的fsync调用的计数器。
  • 如果Redis正在执行加载操作,那么persistence分段将会新增额外的字段,如下所示:
loading_start_time:开始执行加载转储文件操作的时间戳,基于Epoch时间。loading_total_bytes:转储文件的总大小。loading_loaded_bytes:已经加载的转储文件的大小,以字节为单位。loading_loaded_perc:已经加载的转储文件的百分比。loading_eta_seconds:预计完成加载转储文件需要消耗的时间,以秒为单位。

info stats

127.0.0.1:6379> info stats
# Stats
total_connections_received:Redis服务器接受的连接总数。
total_commands_processed:Redis服务器处理的命令总数。
instantaneous_ops_per_sec:每秒钟处理的命令数量。
total_net_input_bytes:通过网络接收的数据总量,以字节为单位。
total_net_output_bytes:通过网络发送的数据总量,以字节为单位。
instantaneous_input_kbps:每秒钟接收数据的速率,以kbps为单位。
instantaneous_output_kbps:每秒钟发送数据的速率,以kbps为单位。
rejected_connections:Redis服务器由于maxclients限制而拒绝的连接数量。
sync_full:Redis主机和从机进行完全同步的次数。
sync_partial_ok:Redis服务器接受PSYNC请求的次数。
sync_partial_err:Redis服务器拒绝PSYNC请求的次数。
expired_keys:键过期事件的总数。
evicted_keys:由于maxmemory限制,而被回收内存的键的总数。
keyspace_hits:在主字典中成功查找到键的次数。
keyspace_misses:在主字典中未能成功查找到键的次数。
pubsub_channels:客户端订阅的发布/订阅频道的总数量。
pubsub_patterns:客户端订阅的发布/订阅模式的总数量。
latest_fork_usec:最近一次fork操作消耗的时间,以微秒为单位。
migrate_cached_sockets:迁移已缓存的套接字的数量。

info commandstats

127.0.0.1:6379> info commandstats
# Commandstats
cmdstat_get:calls=5,usec=30,usec_per_call=6.00
cmdstat_set:calls=11,usec=140,usec_per_call=12.73
cmdstat_del:calls=1,usec=5,usec_per_call=5.00
cmdstat_exists:calls=3,usec=10,usec_per_call=3.33
cmdstat_sadd:calls=2,usec=47,usec_per_call=23.50
cmdstat_mset:calls=1,usec=23,usec_per_call=23.00
cmdstat_expire:calls=1,usec=8,usec_per_call=8.00
cmdstat_keys:calls=4,usec=79,usec_per_call=19.75
cmdstat_dbsize:calls=1,usec=2,usec_per_call=2.00
cmdstat_type:calls=2,usec=11,usec_per_call=5.50
cmdstat_info:calls=104,usec=6071,usec_per_call=58.38
cmdstat_ttl:calls=4,usec=20,usec_per_call=5.00
cmdstat_client:calls=5,usec=78,usec_per_call=15.60
cmdstat_command:calls=7,usec=4174,usec_per_call=596.29

info cpu

127.0.0.1:6379> info cpu
# CPU
used_cpu_sys:1300.85
used_cpu_user:780.14
used_cpu_sys_children:0.01
used_cpu_user_children:0.00

info cluster

127.0.0.1:6379> info cluster
# Cluster
cluster_enabled:0 # 表示是否启用Redis集群功能的标志。

info keyspace

127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=6,expires=0,avg_ttl=0 
# 一个XXX表示数据库的编号,第二个XXX表示键的数量,第三个XXX表示具有过期时间的键的数量,第四个XXX表示键的平均生存时间。

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

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

相关文章

Effective C++学习第九天

条款32:确定你的public继承塑模出is-a模型class D(derived)以public形式继承class B(base),则每一个类型为D的对象同时也是一个类型为B的对象,反之不成立,因此B比D表现出更加一般化的…

Effective C++学习第十天

条款36:绝不重新定义继承而来的non-virtual函数non-virtual函数执行的是静态绑定,在编译器就已经决定,因此对象对用的函数只和指针的类型有关,而与指针所指的对象无关;记住non-virtual函数的性质:不变性凌驾…

Redis运维和开发学习笔记(7) 内存管理和过期策略

Redis运维和开发学习笔记(7) 内存管理和过期策略 文章目录Redis运维和开发学习笔记(7) 内存管理和过期策略内存回收策略惰性删除定时任务删除maxmemory过期策略allkeys-lru主从搭建测试搭建完毕主从测试结果volatile-lru测试结果volatile-ttl测试结果allkeys-lru内存回收策略 …

Effective C++学习第十一天

条款41:了解隐式接口和编译期多态面向对象编程世界总是以显式接口(源码可见的接口)和运行期多态(virtual)解决问题;对于templates及泛型编程的世界,隐式接口和编译期多态显得更加重要&#xff1…

Redis源码分析(零)学习路径笔记

文章目录第一阶段第二阶段 熟悉Redis的内存编码结构第三阶段 熟悉Redis数据类型的实现第四阶段 熟悉Redis数据库的实现第五阶段 熟悉客户端和服务器端的代码实现第六阶段 这一阶段主要是熟悉Redis多机部分的代码实现关于测试方面的文件有一些工具类的文件如下SORT命令的实现一些…

Effective C++学习第十二天

条款47:请使用traits classes表现类型信息STL有五类迭代器分类,input迭代器(只读,一次,向前)、output迭代器(可写,一次,向前)、forward迭代器(读/…

Redis源码分析(一)redis.c //redis-server.c

Redis源码分析(一)redis.c //redis-server.c 入口函数 int main() 4450 int main(int argc, char **argv) {4451 initServerConfig();4452 if (argc 2) {4453 ResetServerSaveParams();4454 loadServerConfig(argv[1]);4455 …

Linux 学习

1.linux文本命令行语言环境设置命令 查看当前语言环境: echo ¥LANG 修改: LANG选择的语言环境’ 引申:https://blog.csdn.net/huoyunshen88/article/details/41113633 2.linux中的硬链接和软连接 linux中文件的储存方式&#xf…

vivo C/C++工程师视频面试总结 20180802

1.自我介绍:有点儿紧张了,直接把自己简历上的一些信息信息说了一遍,说完之后在介绍了一下自己的平时的爱好和兴趣,感觉面试官没有理我,直接进入下一环节了。 2.项目详情:主要是自己最近的一个项目和自己负…

Redis源码分析(二)redis-cli.c

文章目录1. int main()2. parseOptions(int argc, char **argv) 进行ip和port的改变3. lookupCommand(char *name) 查找命令,判断命令合法3.2 strcasecmp(name,cmdTable[j].name)3.1 redisCommand cmdTable[]4. cliSendCommand(int argc, char **argv)4.1 cliConnec…

C语言中有bool变量吗?

1.C/C中定义的数据类型: C语言中定义了6种基本数据类型:short,int,long,float,double,char 4种构造类型:数组,结构体(struct),共用类型(union),枚举类型(enum) 指针类型和空类型 C语…

redis源码剖析(三)——基础数据结构

文章目录SDS链表字典这篇文章关于 Redis 的基础数据:SDS SDS (Simple Dynamic String)是 Redis 最基础的数据结构。直译过来就是”简单的动态字符串“。Redis 自己实现了一个动态的字符串,而不是直接使用了 C 语言中的字符串。 sds 的数据结…

C++迭代器使用错误总结

指针和迭代器的区别: 迭代器: (1)迭代器不是指针,是类模板,表现的像指针。他只是模拟了指针的一些功能,通过重载了指针的一些操作符,->,*, --等封装了指针,是一…

redis源码剖析(四)跳表

文章目录整数集合跳跃表压缩列表总结整数集合 当一个集合只包含整数,且这个集合的元素不多的时候,Redis 就会使用整数集合 intset 。首先看 intset 的数据结构: typedef struct intset {// 编码方式uint32_t encoding;// 集合包含的元素数量…

vivo C/C++工程师 HR视频面试问题总结20180807

一开始没想到这次视频面是HR面试,还以为是技术面试,毕竟上次面试的时候技术问题问的相对比较少,所以面试准备方向有点儿错了,不过还是总结一下具体问题。 1)自我介绍:吸取了上次自我介绍的经验,…

在Redis客户端设置连接密码 并演示密码登录

我们先连接到Redis服务 然后 我们要输入 CONFIG SET requirepass “新密码” 例如 CONFIG SET requirepass "A15167"这样 密码就被设置成立 A15167 我们 输入 AUTH 密码 例如 AUTH A15167这里 返回OK说明成功了 然后 我们退出在登录就真的需要 redis-cli -h IP地…

redis源码剖析(五)—— 字符串,列表,哈希,集合,有序集合

文章目录对象REDIS_STRING (字符串)REDIS_LIST 列表REDIS_SET (集合)REDIS_ZSET (有序集合)REDIS_HASH (hash表)int refcount(引用计数器)unsigned lru:REDIS_LRU_BITS对象 对于 Re…

函数sscanf小结

1.sscanf用于处理固定格式的字符串&#xff0c;包含在头文件<cstdio>中&#xff0c;函数原型为&#xff1a; int sscanf(const char *buffer,const char*format,[]argument ]...); 其中:buffer代表着要存储的数据&#xff0c;format 代表格式控制字符串&#xff0c;arg…

redis源码剖析(六)—— Redis 数据库、键过期的实现

文章目录数据库的实现数据库读写操作键的过期实现数据库的实现 我们先看代码 server.h/redisServer struct redisServer{...//保存 db 的数组redisDb *db;//db 的数量int dbnum;... }再看redisDb的代码&#xff1a; typedef struct redisDb {dict *dict; /*…

多益网络 视频面试面试总结20180816

1.首先是自我介绍&#xff1a;因为等了半个小时&#xff0c;所以有点儿紧张&#xff0c;只说了一下自己的学校&#xff0c;爱好和兴趣&#xff1b; 2.介绍了一个自己的最成功的项目&#xff1a;我介绍了一个关于GPS导航的项目&#xff0c;介绍了项目的内容和项目的一些工作&am…