redis里怎么查当前正在跑的sql语句,想知道执行情况咋弄
- 问答
- 2026-01-19 15:12:37
- 2
在Redis里,没有传统数据库(比如MySQL)那种叫做“SQL”的语句,因为Redis使用的是自己的一套命令,SET, GET, HGETALL, ZRANGE 等等,您想问的应该是“如何在Redis里查看当前正在执行的命令”以及“如何了解Redis的执行情况”。
要查看Redis当前正在执行什么命令,最直接的方法就是使用Redis自带的 INFO 命令和 MONITOR 命令,这两个命令的用途和影响完全不同,需要根据你的具体需求谨慎选择。

第一部分:实时查看正在执行的命令——慎用 MONITOR
如果你想知道此时此刻,Redis服务器上正在一个接一个地执行哪些命令,就好像看直播一样,那么你可以使用 MONITOR 命令。

- 怎么用:非常简单,只需要在你的Redis客户端(比如命令行工具
redis-cli)里,输入MONITOR然后回车即可。 - 你会看到什么:输入命令后,你的客户端会进入一个实时监控模式,之后,任何其他客户端对Redis发起的任何命令,都会立刻在你的屏幕上打印出来,每一行输出通常会包含时间戳、客户端连接的编号、数据库编号,以及具体执行的命令和参数。
- 一个简单的例子:假设你打开了两个
redis-cli窗口,在窗口A中,你输入了MONITOR,然后你在窗口B中,先执行SET mykey "Hello",再执行GET mykey,那么此时,在窗口A中你会立刻看到类似这样的两行信息:123456 [0 127.0.0.1:55555] "SET" "mykey" "Hello" 1719372833.654321 [0 127.0.0.1:55555] "GET" "mykey" - 非常重要的警告(来自Redis官方文档的提醒):
MONITOR命令虽然强大,但绝对不能在负载高的生产环境中频繁或长时间使用,原因在于,MONITOR命令本身会对Redis服务器的性能造成显著影响,Redis的核心是单线程处理命令,MONITOR命令会让服务器将每个收到的命令都复制一份并发送给所有开启了监控的客户端,这会极大地消耗CPU资源,并可能使Redis的吞吐量(QPS)下降一半甚至更多,它只应该用于短暂的调试和问题排查,比如在测试环境或者确定需要抓取一瞬间的命令流时使用,用完后务必及时退出(按Ctrl+C)。
第二部分:了解Redis的执行情况和性能——使用 INFO 命令
如果你不是想看“直播”,而是想了解Redis服务器整体的运行健康状况、统计信息和性能指标,从启动到现在一共处理了多少个命令?连接了多少个客户端?内存用了多少?持久化是否正常?INFO 命令是你的首选工具。

- 怎么用:在客户端中输入
INFO,由于它返回的信息量非常大,我们通常不会直接看全部,而是查看特定的部分。 - 看哪些关键部分:
INFO stats:这是最重要的部分之一,包含了大量的统计信息。- 查看
total_commands_processed:这个数字表示Redis服务器自启动以来一共处理了多少个命令,你可以隔一段时间运行一次INFO stats,然后计算这个数字的差值,就能知道这段时间内Redis的平均命令处理速率。 - 查看
instantaneous_ops_per_sec:这个数字更直观,它表示服务器在最近一秒内处理的命令数量,直接反映了当前的负载压力。 - 查看
keyspace_hits和keyspace_misses:这两个数字反映了缓存命中率。hits/(hits+misses) 就是命中率,如果命中率很低,可能意味着你的缓存策略有问题。
- 查看
INFO clients:这里主要看connected_clients,它表示当前有多少个客户端连接到了Redis服务器,如果这个数字异常高,可能需要检查是否有连接泄漏。INFO memory:这里看内存使用情况,重点关注used_memory_human,它会以人类易读的格式(如M、G)显示Redis当前总共使用了多少内存,这对于防止内存溢出至关重要。INFO persistence:如果你使用了Redis的持久化功能(RDB或AOF),这里会显示上次持久化是否成功、耗时等信息。
第三部分:更深入的排查——SLOWLOG 慢查询日志
你并不关心所有命令,只关心那些执行得很慢、可能成为性能瓶颈的命令,Redis提供了一个非常实用的功能:慢查询日志(Slow Log)。
- 是什么:慢查询日志会记录那些执行时间超过指定阈值的命令,这个阈值是可以配置的。
- 怎么配置:在Redis配置文件
redis.conf中,有两个关键参数:slowlog-log-slower-than:单位是微秒(1秒=1,000,000微秒),默认值是10000,即10毫秒,意味着执行时间超过10毫秒的命令会被记录到慢日志中,你可以根据实际情况调整,比如设置为5毫秒(5000微秒)或1毫秒(1000微秒)以捕获更多慢查询。slowlog-max-len:慢日志列表的最大长度,默认是128,即最多保存128条慢日志记录,当新记录进来而列表已满时,最旧的一条记录会被删除。
- 怎么查看:配置生效后(可以重启服务或使用
CONFIG SET命令动态修改),你就可以使用SLOWLOG GET [number]命令来查看慢日志了。[number]是可选的,表示你想看多少条记录,如果不写,默认是查看全部记录。 - 日志里有什么:每条慢日志记录会包含4个部分:
- 一个唯一的日志ID。
- 该命令被执行时的时间戳。
- 命令的执行耗时,单位是微秒。
- 具体的命令及其参数。
通过分析慢查询日志,你可以很容易地发现哪些命令是性能热点,从而有针对性地进行优化,比如检查是否使用了 KEYS * 这种危险命令,或者是否需要对某些大对象进行拆分。
- 想实时偷看所有命令,用
MONITOR,但只能临时用,否则会拖垮服务器。 - 想了解服务器的整体健康状态和性能指标,用
INFO命令,重点关注stats,clients,memory等部分。 - 想专门排查执行速度慢的命令,配置并使用
SLOWLOG慢查询日志。
这些工具组合起来,就能让你对Redis内部正在发生的事情和执行情况有一个非常清晰的了解。
本文由盘雅霜于2026-01-19发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/83734.html
