redis:info
学习自:Redis之info指令_redis-cli info_多动手,勤思考的博客-CSDN博客
官网:INFO | Redis
场景
redis提供了info指令,可以帮助用户查询redis服务运行期间内部的参数以及实时信息,根据这些信息可以帮助用户诊断问题或查看服务负载、内存压力等信息。
info指令显示的信息繁多,分为9大块,每块都有非常多的参数:
- server:服务器
- client:客户端相关信息
- memory:服务器运行内存统计数据
- persistence:持久化信息
- stats:通用统计数据
- replication:主从复制
- cpu:CPU使用情况
- cluster:集群模式
- keySpace:K-V对的数量统计信息
当输入info,就可以一次性获取全部信息,也可以用info 模块获取指定模块的信息:
127.0.0.1:6379> info # Server redis_version:6.2.3 redis_git_sha1:00000000 redis_git_dirty:0 ......
Server
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # Server redis_version:6.2.13 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:dd215677c6c7f298 redis_mode:standalone os:Linux 3.10.0-1160.el7.x86_64 x86_64 arch_bits:64 monotonic_clock:POSIX clock_gettime multiplexing_api:epoll atomicvar_api:atomic- builtin gcc_version:4.8.5 process_id:1766 process_supervised:no run_id:41dd5db279714d02d8add9f958b9082f65e75814 tcp_port:6379 server_time_usec:1693448751297415 uptime_in_seconds:3890 uptime_in_days:0 hz:10 configured_hz:10 lru_clock:15727151 executable: /usr/local/redis/redis-6 .2.13 /redis-server config_file: /usr/local/redis/redis-6 .2.13 /redis .conf io_threads_active:0 |
各项说明
项 |
应用场景 |
说明 |
redis_version | redis版本 | |
run_id |
每次重启会导致改变 s检测到m的id发生变化就会进行全量复制 可以用redis-cli debug reload实现不改变ID重新加载RDB |
节点ID |
Client
1 2 3 4 5 6 7 8 9 | # Clients connected_clients:2 cluster_connections:0 maxclients:10000 client_recent_max_input_buffer:24 client_recent_max_output_buffer:0 blocked_clients:0 tracking_clients:0 clients_in_timeout_table:0 |
各项说明
项 |
说明 |
connected_clients | 当前连接的客户端数量 |
maxclients | 最大允许连接的客户端数量(在conf中设置) |
client_recent_max_output_buffer | 最近output buffer最大占用量 |
client_recent_max_input_buffer | 最近input buffer最大占用量 |
blocked_clients | 正在执行阻塞命令(如blpop、brpop)的客户端个数 |
关于C端的信息,还可以看:redis:客户端client
Persistence
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # Persistence loading:0 current_cow_size:0 current_cow_size_age:0 current_fork_perc:0.00 current_save_keys_processed:0 current_save_keys_total:0 rdb_changes_since_last_save:20 rdb_bgsave_in_progress:0 rdb_last_save_time:1693210918 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:-1 rdb_current_bgsave_time_sec:-1 rdb_last_cow_size:0 aof_enabled:1 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok aof_last_cow_size:0 module_fork_in_progress:0 module_fork_last_cow_size:0 aof_current_size:1356 aof_base_size:1356 aof_pending_rewrite:0 aof_buffer_length:0 aof_rewrite_buffer_length:0 aof_pending_bio_fsync:0 aof_delayed_fsync:0 <br>aof-load-truncated yes |
各项说明
项 |
应用场景 |
说明 |
rdb_* | 当bgsave完成后,子进程会向父进程发信号表示完成,此时父进程会更新rdb开头的状态信息 | |
rdb_last_save_time | bgsave后,子进程创建RDB文件 | 最后一次生成RDB的时间 |
rdb_bgsave_in_progress | 单机多Redis部署时,监控子进程运行状况的度量指标 | bgsave子进程是否正在运行 |
rdb_current_bgsave_time_sec | 当前运行bgsave的时间,-1代表未运行 | |
aof_* | 当新AOF写入后,子进程会向父进程发送信号表示完成,此时父进程会更新aof开头的统计信息 | |
aof_enable | ||
aof_current_size | AOF重写的自动触发时机(也是子进程度量指标) | 当前AOF文件空间 |
aof_base_size | 上一次重写后AOF文件空间 | |
aof_delayed_fsync | AOF追加阻塞事件发生时 | AOF阻塞问题发生次数 |
aof-load-truncated | 发生停电事故导致AOF文件尾不完整时 | 是否忽略AOF不完整尾部的情况 |
Stats
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | # Stats total_connections_received:1 total_commands_processed:2 instantaneous_ops_per_sec:0 total_net_input_bytes:59 total_net_output_bytes:20329 instantaneous_input_kbps:0.00 instantaneous_output_kbps:0.00 rejected_connections:0 sync_full:0 sync_partial_ok:0 sync_partial_err:0 expired_keys:0 expired_stale_perc:0.00 expired_time_cap_reached_count:0 expire_cycle_cpu_milliseconds:0 evicted_keys:0 keyspace_hits:0 keyspace_misses:0 pubsub_channels:0 pubsub_patterns:0 latest_fork_usec:0 total_forks:0 migrate_cached_sockets:0 slave_expires_tracked_keys:0 active_defrag_hits:0 active_defrag_misses:0 active_defrag_key_hits:0 active_defrag_key_misses:0 tracking_total_keys:0 tracking_total_items:0 tracking_total_prefixes:0 unexpected_error_replies:0 total_error_replies:0 dump_payload_sanitizations:0 total_reads_processed:3 total_writes_processed:2 io_threaded_reads_processed:0 io_threaded_writes_processed:0 |
各项说明
项 |
应用环境 |
说明 |
total_connections_received | C端指标 | Redis启动以来处理的C端连接总数 |
rejected_connections | Redis启动以来拒绝的客户端连接总数,需要重点监控 | |
latest_fork_usec | 执行bgsave命令时,父进程会执行fork创建子进程 | 最近一个fork操作的耗时,单位μs |
replication:主从复制
在m和s上的表现不同
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | # Replication master role:master connected_slaves:1 slave0:ip=192.168.10.11,port=6379,state=online,offset=42,lag=0 master_failover_state:no-failover master_replid:6ba7f0a7f358301c297665704467d03f936528e7 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:42 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:42 # slave role:slave master_host:192.168.10.20 master_port:6379 master_link_status:up master_last_io_seconds_ago:2 master_sync_in_progress:0 slave_read_repl_offset:562 slave_repl_offset:562 slave_priority:100 slave_read_only:1 replica_announced:1 connected_slaves:0 master_failover_state:no-failover master_replid:3f09c98bd0e88dc4cc924a7c224a4c9e1d453834 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:562 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:549 repl_backlog_histlen:14 |
各项
项 |
应用环境 |
说明 |
role |
如果该服务器是master,那该项就是master;否则就是slave。 |
|
s节点 |
||
master_host | m节点ip | |
master_port | m节点port | |
master_link_status | m节点的连接状态 | |
slave_repl_offset | 当前s节点的数据偏移量(在收到m发送的命令后,该值会累加) | |
m节点 |
||
slave0 | 与m相连的s节点的信息 | lag代表最近一次通信延迟 |
master_failover_state | 复制转移状态 | |
master_replid | redis服务器的主从复制ID | |
master_replid2 | 备选的主从复制ID | |
master_repl_offset | 当前m节点数据偏移量 | |
second_repl_offset | 接受来自哪个ID的偏移 | |
repl_blacklog_active | 复制缓冲区 | 复制缓冲区是否启用 |
repl_backlog_size | 复制缓冲区最大长度 | |
repl_backlog_first_byte_offset | 起始偏移量,用于计算当前缓冲区的可用范围 | |
repl_backlog_histlen | 缓冲区已经存入的数据有效长度 | |
复制缓冲区:
复制积压缓冲区是保存在m上的一个长度固定的队列,默认大小1MB,当m与s相连,并且响应写命令时,除了把该命令发给s,还会将之写入复制积压缓冲区。
缓冲区的本质是先进先出的定长队列,所以可以实现保存最近已复制数据的功能,用于不救部分复制和复制命令丢失的数据。
结合grep可实现定向查找:
每条执行多少次指令:
redis-cli info stats | grep ops instantaneous_ops_per_sec:12
instantaneous_ops_per_sec(每秒瞬时运行次数)值为12,意味着客户端每秒发送12条指令到服务端执行,如果ops过高,可以通过monitor指令观察哪些Key会被访问比较频繁:
root@f5cd3ecb4cd8:/data# redis-cli monitor OK 1640764159.129379 [0 127.0.0.1:34272] "COMMAND" 1640764160.890701 [0 127.0.0.1:34272] "set" "hello" "1"
monitor实时显示redis正在执行的指令,如果ops很高,那么控制就会瞬时输出很多指令。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性