深入解析Redis中的Info指令

本篇文章带大家了解一下redis中的info指令,希望对大家有所帮助!

深入解析Redis中的Info指令

Redis提供了info指令,它会返回关于Redis服务器的各种信息和统计数值。在使用Redis时,时常会遇到一些疑难杂症需要我们去排查,这个时候我们可以通过info指令来获取Redis的运行状态,然后进行问题的排查。【相关推荐:Redis视频教程】

通过给定可选的参数 section ,可以让命令只返回某一部分的信息:

server: Redis服务器的一般信息

clients: 客户端的连接部分

memory: 内存消耗相关信息

persistence: RDB和AOF相关信息

stats: 一般统计

replication: 主/从复制信息

cpu: 统计CPU的消耗

commandstats: Redis命令统计

cluster: Redis集群信息

keyspace: 数据库的相关统计

它也可以采取以下值:

all: 返回所有信息default: 值返回默认设置的信息

如果没有使用任何参数时,默认为default,返回所有的信息。

info/info all

返回Redis服务所有的信息

# Serverredis_version:6.2.4redis_git_sha1:00000000redis_git_dirty:0redis_build_id:fa652e749408dcfdredis_mode:standaloneos:Linux 3.10.0-327.el7.x86_64 x86_64arch_bits:64multiplexing_api:epollatomicvar_api:c11-builtingcc_version:9.3.1process_id:4617process_supervised:norun_id:9662797d01b55345cd6cabad38d102e27db19e66tcp_port:6379server_time_usec:1632494557942546uptime_in_seconds:4uptime_in_days:0hz:10configured_hz:10lru_clock:5104605executable:/usr/local/soft/redis-6.2.4/src/redis-serverconfig_file:/usr/local/soft/redis-6.2.4/redis.confio_threads_active:0# Clientsconnected_clients:1cluster_connections:0maxclients:10000client_recent_max_input_buffer:16client_recent_max_output_buffer:0blocked_clients:0tracking_clients:0clients_in_timeout_table:0# Memoryused_memory:874728used_memory_human:854.23Kused_memory_rss:10207232used_memory_rss_human:9.73Mused_memory_peak:932800used_memory_peak_human:910.94Kused_memory_peak_perc:93.77%used_memory_overhead:830808used_memory_startup:810168used_memory_dataset:43920used_memory_dataset_perc:68.03%allocator_allocated:1036080allocator_active:1380352allocator_resident:3932160total_system_memory:1913507840total_system_memory_human:1.78Gused_memory_lua:37888used_memory_lua_human:37.00Kused_memory_scripts:0used_memory_scripts_human:0Bnumber_of_cached_scripts:0maxmemory:104857600maxmemory_human:100.00Mmaxmemory_policy:volatile-lfuallocator_frag_ratio:1.33allocator_frag_bytes:344272allocator_rss_ratio:2.85allocator_rss_bytes:2551808rss_overhead_ratio:2.60rss_overhead_bytes:6275072mem_fragmentation_ratio:12.27mem_fragmentation_bytes:9375272mem_not_counted_for_evict:0mem_replication_backlog:0mem_clients_slaves:0mem_clients_normal:20496mem_aof_buffer:0mem_allocator:jemalloc-5.1.0active_defrag_running:0lazyfree_pending_objects:0lazyfreed_objects:0# Persistenceloading:0current_cow_size:0current_cow_size_age:0current_fork_perc:0.00current_save_keys_processed:0current_save_keys_total:0rdb_changes_since_last_save:0rdb_bgsave_in_progress:0rdb_last_save_time:1632494553rdb_last_bgsave_status:okrdb_last_bgsave_time_sec:-1rdb_current_bgsave_time_sec:-1rdb_last_cow_size:0aof_enabled:0aof_rewrite_in_progress:0aof_rewrite_scheduled:0aof_last_rewrite_time_sec:-1aof_current_rewrite_time_sec:-1aof_last_bgrewrite_status:okaof_last_write_status:okaof_last_cow_size:0module_fork_in_progress:0module_fork_last_cow_size:0# Statstotal_connections_received:1total_commands_processed:1instantaneous_ops_per_sec:0total_net_input_bytes:31total_net_output_bytes:20324instantaneous_input_kbps:0.00instantaneous_output_kbps:0.00rejected_connections:0sync_full:0sync_partial_ok:0sync_partial_err:0expired_keys:0expired_stale_perc:0.00expired_time_cap_reached_count:0expire_cycle_cpu_milliseconds:0evicted_keys:0keyspace_hits:0keyspace_misses:0pubsub_channels:0pubsub_patterns:0latest_fork_usec:0total_forks:0migrate_cached_sockets:0slave_expires_tracked_keys:0active_defrag_hits:0active_defrag_misses:0active_defrag_key_hits:0active_defrag_key_misses:0tracking_total_keys:0tracking_total_items:0tracking_total_prefixes:0unexpected_error_replies:0total_error_replies:0dump_payload_sanitizations:0total_reads_processed:2total_writes_processed:1io_threaded_reads_processed:0io_threaded_writes_processed:0# Replicationrole:masterconnected_slaves:0master_failover_state:no-failovermaster_replid:5b43385d46f4a601c025cb2c4ce5706b0b77db86master_replid2:0000000000000000000000000000000000000000master_repl_offset:0second_repl_offset:-1repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0# CPUused_cpu_sys:0.030666used_cpu_user:0.000000used_cpu_sys_children:0.000000used_cpu_user_children:0.000000used_cpu_sys_main_thread:0.030570used_cpu_user_main_thread:0.000000# Modules# Errorstats# Clustercluster_enabled:0# Keyspacedb0:keys=2,expires=0,avg_ttl=0

登录后复制

info server

下面是所有 server 相关的信息

参数名 含义

redis_versionRedis 服务器版本redis_git_sha1Git SHA1redis_git_dirtyGit dirty flagredis_build_id构建IDredis_mode服务器模式(standalone,sentinel或者cluster)osRedis 服务器的宿主操作系统arch_bits架构(32 或 64 位)multiplexing_apiRedis 所使用的事件处理机制atomicvar_apiRedis使用的Atomicvar APIgcc_version编译 Redis 时所使用的 GCC 版本process_id服务器进程的 PIDrun_idRedis 服务器的随机标识符(用于 Sentinel 和集群)tcp_portTCP/IP 监听端口uptime_in_seconds自 Redis 服务器启动以来,经过的秒数uptime_in_days自 Redis 服务器启动以来,经过的天数hz服务器的频率设置lru_clock以分钟为单位进行自增的时钟,用于 LRU 管理executable服务器的可执行文件路径config_file配置文件路径

1.png

info clients

下面是所有 clients 相关的信息

参数名 含义

connected_clients已连接客户端的数量(不包括通过从属服务器连接的客户端)client_longest_output_list当前连接的客户端当中,最长的输出列表client_biggest_input_buf当前连接的客户端当中,最大输入缓存blocked_clients正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量

2.png

info memory

下面是所有 memory 相关的信息

参数名 含义

used_memory由 Redis 分配器分配的内存总量,以字节(byte)为单位used_memory_human以人类可读的格式返回 Redis 分配的内存总量used_memory_rss从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。used_memory_peakRedis 的内存消耗峰值(以字节为单位)used_memory_peak_human以人类可读的格式返回 Redis 的内存消耗峰值used_memory_peak_perc使用内存占峰值内存的百分比used_memory_overhead服务器为管理其内部数据结构而分配的所有开销的总和(以字节为单位)used_memory_startupRedis在启动时消耗的初始内存大小(以字节为单位)used_memory_dataset以字节为单位的数据集大小(used_memory减去used_memory_overhead)used_memory_dataset_percused_memory_dataset占净内存使用量的百分比(used_memory减去used_memory_startup)total_system_memoryRedis主机具有的内存总量total_system_memory_human以人类可读的格式返回 Redis主机具有的内存总量used_memory_luaLua 引擎所使用的内存大小(以字节为单位)used_memory_lua_human以人类可读的格式返回 Lua 引擎所使用的内存大小maxmemorymaxmemory配置指令的值maxmemory_human以人类可读的格式返回 maxmemory配置指令的值maxmemory_policymaxmemory-policy配置指令的值mem_fragmentation_ratioused_memory_rss 和 used_memory 之间的比率mem_allocator在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmallocactive_defrag_running指示活动碎片整理是否处于活动状态的标志lazyfree_pending_objects等待释放的对象数(由于使用ASYNC选项调用UNLINK或FLUSHDB和FLUSHALL)

在理想情况下, used_memory_rss 的值应该只比 used_memory 稍微高一点儿。当 rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。内存碎片的比率可以通过mem_fragmentation_ratio 的值看出。当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。由于Redis无法控制其分配的内存如何映射到内存页,因此常住内存(used_memory_rss)很高通常是内存使用量激增的结果。当 Redis 释放内存时,内存将返回给分配器,分配器可能会,也可能不会,将内存返还给操作系统。如果 Redis 释放了内存,却没有将内存返还给操作系统,那么 used_memory 的值可能和操作系统显示的 Redis 内存占用并不一致。查看 used_memory_peak 的值可以验证这种情况是否发生。

3.png

info persistence

下面是所有 persistence 相关的信息:

参数名 含义

loading指示转储文件(dump)的加载是否正在进行的标志rdb_changes_since_last_save自上次转储以来的更改次数rdb_bgsave_in_progress指示RDB文件是否正在保存的标志rdb_last_save_time上次成功保存RDB的基于纪年的时间戳rdb_last_bgsave_status上次RDB保存操作的状态rdb_last_bgsave_time_sec上次RDB保存操作的持续时间(以秒为单位)rdb_current_bgsave_time_sec正在进行的RDB保存操作的持续时间(如果有)rdb_last_cow_size上次RDB保存操作期间copy-on-write分配的字节大小aof_enabled表示AOF记录已激活的标志aof_rewrite_in_progress表示AOF重写操作正在进行的标志aof_rewrite_scheduled表示一旦进行中的RDB保存操作完成,就会安排进行AOF重写操作的标志aof_last_rewrite_time_sec上次AOF重写操作的持续时间,以秒为单位aof_current_rewrite_time_sec正在进行的AOF重写操作的持续时间(如果有)aof_last_bgrewrite_status上次AOF重写操作的状态aof_last_write_status上一次AOF写入操作的状态aof_last_cow_size上次AOF重写操作期间copy-on-write分配的字节大小

changes_since_last_save指的是从上次调用SAVE或者BGSAVE以来,在数据集中产生某种变化的操作的数量。

4.png

AOF

如果启用了AOF,则会添加以下这些额外的字段:

参数名 含义

aof_current_size当前的AOF文件大小aof_base_size上次启动或重写时的AOF文件大小aof_pending_rewrite指示AOF重写操作是否会在当前RDB保存操作完成后立即执行的标志。aof_buffer_lengthAOF缓冲区大小aof_rewrite_buffer_lengthAOF重写缓冲区大小aof_pending_bio_fsync在后台IO队列中等待fsync处理的任务数aof_delayed_fsync延迟fsync计数器

loading

如果正在执行加载操作,将会添加这些额外的字段:

参数名 含义

loading_start_time加载操作的开始时间(基于纪元的时间戳)loading_total_bytes文件总大小loading_loaded_bytes已经加载的字节数loading_loaded_perc已经加载的百分比loading_eta_seconds预计加载完成所需的剩余秒数

status

下面是所有 stats 相关的信息:

参数名 含义

total_connections_received服务器接受的连接总数total_commands_processed服务器处理的命令总数instantaneous_ops_per_sec每秒处理的命令数rejected_connections由于maxclients限制而拒绝的连接数expired_keyskey到期事件的总数evicted_keys由于maxmemory限制而导致被驱逐的key的数量keyspace_hits在主字典中成功查找到key的次数keyspace_misses在主字典中查找key失败的次数pubsub_channels拥有客户端订阅的全局pub/sub通道数pubsub_patterns拥有客户端订阅的全局pub/sub模式数latest_fork_usec最新fork操作的持续时间,以微秒为单位

info replication

下面是所有 replication 相关的信息:

参数名 含义

role如果实例不是任何节点的从节点,则值是”master”,如果实例从某个节点同步数据,则是”slave”。 请注意,一个从节点可以是另一个从节点的主节点(菊花链)

如果实例是从节点,则会提供以下这些额外字段:

参数名 含义

master_host主节点的Host名称或IP地址master_port主节点监听的TCP端口master_link_status连接状态(up或者down)master_last_io_seconds_ago自上次与主节点交互以来,经过的秒数master_sync_in_progress指示主节点正在与从节点同步

如果SYNC操作正在进行,则会提供以下这些字段:

参数名 含义

master_sync_left_bytes同步完成前剩余的字节数master_sync_last_io_seconds_ago在SYNC操作期间自上次传输IO以来的秒数

如果主从节点之间的连接断开了,则会提供一个额外的字段:

参数名 含义

master_link_down_since_seconds自连接断开以来,经过的秒数

以下字段将始终提供:

参数名 含义

connected_slaves已连接的从节点数

对每个从节点,将会添加以下行:slaveXXX id,地址,端口号,状态

5.png

info CPU

下面是所有 cpu 相关的信息:

参数名 含义

used_cpu_sys由Redis服务器消耗的系统CPUused_cpu_user由Redis服务器消耗的用户CPUused_cpu_sys_children由后台进程消耗的系统CPUused_cpu_user_children由后台进程消耗的用户CPU

6.png

info cluster

cluster部分当前只包含一个唯一的字段:

参数名 含义

cluster_enabled表示已启用Redis集群

7.png

info keyspace

keyspace部分提供有关每个数据库的主字典的统计,统计信息是key的总数和过期的key的总数,对于每个数据库,提供以下行:

参数名 含义

keyspacedbXXX keys=XXX,expires=XXX

8.png

本文转载自:https://juejin.cn/post/7014398047916883998

更多编程相关知识,请访问:编程视频!!

以上就是深入解析Redis中的Info指令的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2040083.html

(0)
上一篇 2025年2月24日 00:08:31
下一篇 2025年2月21日 15:57:46

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 2023年Redis高频面试题分享(附答案分析)

    本篇文章给大家总结分享一些redis高频面试题,有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 面试官心理分析 从面试官的角度分析,出这道题的目的是为了考察你对缓存的认知水平,以及结合缓存处理业务、改善架构的能力。这道题很…

    2025年2月24日 数据库
    200
  • Redis中必须要掌握的20个问题,快来收藏吧!!

    本篇文章给大家分享20个必知必会、必须要掌握的redis问题,希望对大家有所帮助,快来收藏吧! Redis是什么? Redis(Remote Dictionary Server)是一个使用 C 语言编写的,高性能非关系型的键值对数据库。与传…

    2025年2月24日 数据库
    200
  • Redis中为什么需要分布式锁?如何实现?

    本篇文章给大家介绍一下redis中的分布式锁,介绍一下为什么需要分布式锁,redis是如何实现分布式锁的,希望对大家有所帮助! 为什么需要分布式锁 为什么需要分布式锁 使用分布式锁的目的,无外乎就是保证同一时间只有一个客户端可以对共享资源进…

    2025年2月24日
    200
  • Redis中的两种持久化方式,为什么需要两种持久化?

    redis中有两种持久化(aof和rdb),下面本篇文章带大家了解一下这两种持久化,看看它们的优缺点,介绍一下为什么redis需要两种持久化,希望对大家有所帮助! Redis的两种持久化方式 众所周知,Redis中提供了AOF,RDB两种持…

    2025年2月24日
    200
  • 深入解析Redis中的分布式锁

    本篇文章给大家主要带大家了解一下redis中分布式锁的实现和代码解析,希望对大家有所帮助! Redis 分布式锁 大家项目中都会使用到分布式锁把,通常用来做数据的有序操作场景,比如一笔订单退款(如果可以退多次的情况)。或者用户多端下单。【相…

    2025年2月24日
    200
  • 一起聊聊Redis缓存的淘汰策略

    redis 缓存有哪些淘汰策略?本篇文章就来和大家一起聊聊redis缓存的淘汰策略,介绍缓存策略设置建议,希望对大家有所帮助! Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语…

    2025年2月24日
    200
  • 深入浅析Redis中的sentinel故障转移

    本篇文章带大家了解一下redis中的故障转移(sentinel),希望对大家有所帮助! 当两台以上的Redis实例形成了主备关系,它们组成的集群就具备了一定的高可用性:当master发生故障的时候,slave可以成为新的master对外提供…

    2025年2月24日 数据库
    200
  • 聊一聊分布式系统下基于Redis的分布式锁

    加锁了,还有并发问题?redis分布式锁你真的了解?下面本篇文章就来给大家聊一聊分布式系统下基于redis的分布式锁,希望对大家有所帮助! 新接手的项目,偶尔会出现账不平的问题。之前的技术老大临走时给的解释是:排查了,没找到原因,之后太忙就…

    2025年2月24日
    200
  • redis为什么用单线程?为什么那么快?

    什么是redis的单线程?redis为什么用单线程?为什么单线程redis能那么快?下面本篇文章给大家分析分析,希望对大家有所帮助! 1.基本概念 什么是redis的单线程(核心功能在单线程上,并不是所有功能) redis的网络IO和键值对…

    2025年2月24日 数据库
    200
  • 聊聊Redis中怎么实现支持几乎所有加锁场景的分布式锁

    本篇文章给大家介绍一下redis分布式锁的实现方法,希望对大家有所帮助! Hello 大家好,今天给大家分享redisson实现的多类型锁、支持几乎所有加锁场景的redis分布式锁的实现,还支持小型MQ和redis的各种数据操作。【相关推荐…

    2025年2月24日 数据库
    200

发表回复

登录后才能评论