使用 monitor 命令查看 redis 请求日志

本文介绍如何使用 Redis 的 monitor 功能来实时监控 Redis 请求日志,通过监控可以清晰地了解 Redis 如何处理每个请求,这对于调试阶段特别有用。文章还演示了一个具体的场景,展示了如何确认数据是从 Redis 还是从后端数据库获取的。

     monitor日志要实时拿

     redis 是一个高性能、使用方便的非关系型数据库,我们在使用 redis 时,基本只需要关注存数据,取数据的功能,即 set,get,非常适合用作缓存服务器,降低后端数据库压力。有时,想确认下数据是否是从 redis 里读的,以及 redis 是怎么取得数据,这时就可以使用 monitor 功能了。

    一个典型的功能场景:前台用户请求一条数据,后端拿到用户 id 后,在 redis 缓存中查找该用户数据,没有找到,于是从 db 中拿,找到后,返回给前台,并在 redis 里存放该用户的数据,下次有请求后,就可以直接从 redis 里拿,返回给前台,怎么确认数据是从 redis 里取的?当然,如果数据量大,查询时又没索引,从数据库里取,和从 redis 里取的时间消耗是不一样的。从时间消耗上,就基本可以判断数据是从哪里取的。但如果数据量不大,无法从时间消耗上判断,就需要查看 redis 的请求日志,要注意的是,单纯从 redis.conf 中配置 logfile,loglevel 选项,是看不到 redis 请求和操作日志的,打印的都是些无关紧要的信息,这时可以用 monitor 命令来完成。

使用方法:
登录 redis-cli 命令行,输入monitor,即可进入到 redis 监控模式。

随后即可看到,当有请求时,redis 具体都做了什么,我们另外打开一个 redis-cli,随便插入一条数据,比如set "hello" "world",monitor 监控到
redis-monitorredis-monitor

再模拟下上面的那个用户请求数据的功能场景:

首次运行后,对应到 redis 的监控如下,可以看到,redis 里没有找到,然后从 mysql 中查找,并做了 set 操作将信息存起来,再次运行后,发现 redis 里存在,因此直接从 redis 里 get 数据。
redis请求日志redis请求日志
可见,monitor 命令可以让我们清楚的看到 redis 是怎么处理每个请求的,这对于调试阶段非常方便。
当然,为了演示,上面只是一个简单的例子,并没有考虑连接性能问题,实际上,使用 monitor 是会降低 redis 的性能的,适合开发调试使用。上述例子也没有考虑数据更新,比如用户是做一个更新或者删除操作,则相应的也要把 redis 里的信息也同步更新。

https://xujimmy.com/2017/12/13/redis-request-log.html

### 使用 `MONITOR` 命令监控 Redis 数据库活动 `MONITOR` 是 Redis 提供的一个调试命令,用于实时捕获并输出服务器接收到的所有命令。通过该命令,可以观察到 Redis 数据库的实时活动,这对于排查问题、分析流量来源以及识别热点键(hot keys)非常有帮助。 #### 使用方法 1. **通过 `redis-cli` 使用 `MONITOR`** ```bash redis-cli monitor ``` 执行上述命令后,`MONITOR` 会持续输出 Redis 接收到的所有命令,直到用户通过 `Ctrl+C` 中断监控。 2. **通过 Telnet 使用 `MONITOR`** ```bash telnet 127.0.0.1 6379 monitor ``` 在 Telnet 会话中输入 `monitor` 命令后,同样可以开始监控 Redis 命令流。可以通过 `quit` 命令退出 Telnet 会话以结束监控。 3. **结合日志文件记录** 可以将 `MONITOR` 的输出重定向到文件,便于后续分析: ```bash redis-cli monitor > monitor_output.log ``` 监控结束后,`monitor_output.log` 文件中将包含所有监控期间捕获的命令。 #### 性能影响 尽管 `MONITOR` 是一个强大的调试工具,但其性能影响不可忽视。由于 Redis 会将所有接收到的命令复制到所有连接 `MONITOR` 的客户端,因此启用 `MONITOR` 会显著增加 Redis 的 CPU 和内存使用率。根据测试数据,在运行 `MONITOR` 的情况下,Redis 的基准测试结果显示性能下降明显: - PING_INLINE: 42211.91 请求/秒 - SET: 26143.79 请求/秒 - GET: 33990.48 请求/秒 - MSET (10 keys): 14861.05 请求/秒 这些数据表明,在启用 `MONITOR` 后,Redis 的吞吐量下降了 30% 到 50% 不等。因此,**应避免在生产环境中长时间启用 `MONITOR` 命令,建议仅在测试环境中使用,或在必要时尽快关闭**。 #### 适用场景 - **排查异常流量**:如某台 Redis 服务器出现异常高的网络流量,可通过 `MONITOR` 分析命令来源,识别是否有异常请求模式[^4]。 - **识别热点键(Hot Keys)**:通过分析 `MONITOR` 输出的命令流,可以统计出被频繁访问的键,进而优化缓存策略[^5]。 - **调试客户端行为**:在开发或测试阶段,`MONITOR` 可帮助开发者理解客户端发送的命令是否符合预期。 #### 注意事项 - **性能开销**:如前所述,启用 `MONITOR` 会导致 Redis 性能显著下降,影响超过 50% 的请求处理能力[^2]。 - **安全性**:`MONITOR` 会暴露所有数据库操作,可能涉及敏感数据,因此应限制访问权限,避免在生产环境中误用。 - **日志文件管理**:若将 `MONITOR` 输出重定向到文件,需注意文件大小增长速度,防止磁盘空间耗尽。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值