
文章插图
前言redis是一款非常流行的kv数据库,以高性能著称,其高吞吐、低延迟等特性让广大开发者趋之若鹜,每每看到别人发出的redis故障报告都让我产生一种居安思危,以史为鉴的危机感,恰逢今年十一西安烟雨不断,抽时间学习了几个redis监控命令,和大家分享一波 。
redis-cli --stat【连续统计】 连续统计可能是实时监控 Redis 实例的鲜为人知但非常有用的功能之一,要启用此功能,请使用redis-cli --stat 。
redis-cli --stat 默认每秒输出一条新行,其中包含有用信息和每个采集点的请求次数差异 。使用此命令可以轻松了解内存使用情况、客户端连接计数以及有关已连接 Redis 数据库的各种其他统计信息 。
可以使用-i修改采样频率,默认值为1秒,如下面这个命令代表每2s采集一次数据:
redis-cli --stat -i 2------- data ------ --------------------- load -------------------- - child -keysmemclients blocked requestsconnections8890131.89M4701705992846 (+0)25958890131.93M4701705992897 (+51)25958890131.93M4701705992954 (+57)25958890131.97M4701705992991 (+37)25958890131.89M4701705993043 (+52)25958890131.97M4701705993088 (+45)25958890132.01M4701705993122 (+34)25958890132.01M4701705993168 (+46)25958890132.01M4701705993194 (+26)25958890131.93M4701705993267 (+73)2595
redis-cli --bigkeys【统计大key】这个命令用作键空间分析器,它扫描数据集中的大键,但也提供有关数据集所包含的数据类型的信息 。
# redis-cli --bigkeys# Scanning the entire keyspace to find biggest keys as well as# average sizes per key type.You can use -i 0.1 to sleep 0.1 sec# per 100 SCAN commands (not usually needed).[00.00%] Biggest hashfound so far '"hash_big"' with 6 fields[00.00%] Biggest setfound so far '"set_big"' with 6 members[00.00%] Biggest string found so far '"string_big"' with 979 bytes[00.00%] Biggest string found so far '"string_big_2"' with 1365 bytes-------- summary -------Sampled 5 keys in the keyspace!Total key length in bytes is 38 (avg len 7.60)Biggesthash found '"hash_big"' has 6 fieldsBiggest string found '"string_big_2"' has 1365 bytesBiggestset found '"set_big"' has 6 members0 lists with 0 items (00.00% of keys, avg size 0.00)1 hashs with 6 fields (20.00% of keys, avg size 6.00)3 strings with 2420 bytes (60.00% of keys, avg size 806.67)0 streams with 0 entries (00.00% of keys, avg size 0.00)1 sets with 6 members (20.00% of keys, avg size 6.00)0 zsets with 0 members (00.00% of keys, avg size 0.00)在输出的第一部分中,将报告遇到的每个大于前一个较大key(相同类型)的新key 。摘要部分提供有关 Redis 实例内数据的一般统计信息 。
该程序使用 SCAN 命令,因此它可以在繁忙的服务器上执行而不会影响操作,当然也可以使用-i选项来限制每个 SCAN 命令的指定秒数部分的扫描过程 。
例如,redis-cli --bigkeys -i 1 代表每次SCAN执行之后sleep 1s 。
可以看到--bigkeys给出了每种数据结构的top 1 bigkey,同时给出了每种数据类型的键值个数以及平均大小 。
redis-cli monitor【监控命令执行】与“发布/订阅”模式类似,使用 MONITOR 命令后,将自动进入监视模式,Redis 实例接收的所有命令都将打印到标准输出中:
redis-cli monitor1665128881.578949 [0 127.0.0.1:46046] "COMMAND" "DOCS"1665128885.870333 [0 127.0.0.1:46046] "get" "a"1665128891.200705 [0 127.0.0.1:46046] "set" "a" "asdfasdfasd" "asdfasdf"1665128897.234390 [0 127.0.0.1:46046] "sadd" "test" "aaa"1665128902.439247 [0 127.0.0.1:46046] "smembers" "test"1665128906.257225 [0 127.0.0.1:46046] "smembers" "test"1665128910.073980 [0 127.0.0.1:46046] "smembers" "test"1665128914.688753 [0 127.0.0.1:46046] "hget" "all" "hello"1665128918.006031 [0 127.0.0.1:46046] "hget" "all" "hello"可以看到目前smembers和hget命令执行的比较频繁,可能是异常流量导致,需要引起我们的注意了 。
经验总结扩展阅读
- .NET性能系列文章一:.NET7的性能改进
- 2023年2月装修新房最佳吉日有哪几天 2023年2月装修大吉之日一览
- 厉害到无人能及的星座女是谁 智慧之星是哪位星座呢?
- 动物医学专业坑死我了 为什么
- 分手很久之后仍是会触景伤情的星座女
- 盾之勇者成名录游戏攻略
- 萧炎拜山赴三年之约是第几集?
- dubbo的一系列配置与搭建
- C++之值传递&指针传递&引用传递详解
- 支持JDK19虚拟线程的web框架,之一:体验