Redis(58)如何配置和查看Redis的慢查询日志?

作者:Victor356日期:2025/10/13

Redis 提供了慢查询日志功能,用于记录执行时间超过指定阈值的命令。这有助于识别和优化性能瓶颈。下面详细介绍如何配置和查看 Redis 的慢查询日志,并结合使用 Java 和 Jedis 进行示例演示。

配置慢查询日志

配置 Redis 的慢查询日志可以通过编辑 redis.conf 文件,或者在运行时使用 CONFIG SET 命令。

redis.conf 文件中配置

打开 redis.conf 文件,找到并设置以下参数:

1slowlog-log-slower-than 10000  # 记录执行时间超过 10 毫秒(10000 微秒)的查询
2slowlog-max-len 128            # 最多保存 128 条慢查询日志
3

使用 CONFIG SET 命令运行时配置

可以在 Redis 命令行客户端或者通过编程接口动态设置这些参数:

1redis-cli CONFIG SET slowlog-log-slower-than 10000
2redis-cli CONFIG SET slowlog-max-len 128
3

查看慢查询日志

可以使用 SLOWLOG 命令查看慢查询日志:

1redis-cli SLOWLOG GET
2

输出示例:

11) 1) (integer) 1
2   2) (integer) 1633070207
3   3) (integer) 15000
4   4) 1) "SET"
5      2) "key"
6      3) "value"
72) 1) (integer) 2
8   2) (integer) 1633070208
9   3) (integer) 20000
10   4) 1) "GET"
11      2) "key"
12

使用 Java 和 Jedis 查看慢查询日志

通过 Java 和 Jedis 库,可以程序化地配置和查看 Redis 的慢查询日志。

  1. 添加 Jedis 依赖

如果你使用的是 Maven 项目,确保在 pom.xml 文件中添加 Jedis 依赖:

1<dependency>
2    <groupId>redis.clients</groupId>
3    <artifactId>jedis</artifactId>
4    <version>4.2.3</version>
5</dependency>
6
  1. Java 示例代码

以下代码展示了如何使用 Jedis 库配置和查看 Redis 的慢查询日志:

1import redis.clients.jedis.Jedis;
2import redis.clients.jedis.JedisPool;
3import redis.clients.jedis.JedisPoolConfig;
4import redis.clients.jedis.resps.Slowlog;
5
6import java.util.List;
7
8public class RedisSlowLogExample {
9    public static void main(String[] args) {
10        // 连接 Redis 服务器
11        JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");
12        try (Jedis jedis = pool.getResource()) {
13            // 设置慢查询日志阈值和最大条目数
14            jedis.configSet("slowlog-log-slower-than", "10000");
15            jedis.configSet("slowlog-max-len", "128");
16
17            // 执行一些命令来生成慢查询日志
18            for (int i = 0; i < 10; i++) {
19                jedis.set("key" + i, "value" + i);
20            }
21
22            // 人为制造一个慢查询
23            jedis.eval("redis.call('SET', 'foo', 'bar')", 0);
24
25            // 获取慢查询日志
26            List<Slowlog> slowlogs = jedis.slowlogGet();
27
28            // 打印慢查询日志
29            for (Slowlog log : slowlogs) {
30                System.out.println("ID: " + log.getId());
31                System.out.println("Timestamp: " + log.getTimeStamp());
32                System.out.println("Execution time (µs): " + log.getExecutionTime());
33                System.out.println("Command: " + log.getArgs());
34                System.out.println();
35            }
36
37            // 清除慢查询日志
38            jedis.slowlogReset();
39        }
40        // 关闭连接池
41        pool.close();
42    }
43}
44

代码解释

  1. 连接到 Redis 服务器: 使用 JedisPool 连接到本地 Redis 服务器。
  2. 配置慢查询日志: 使用 jedis.configSet("slowlog-log-slower-than", "10000")jedis.configSet("slowlog-max-len", "128") 配置慢查询日志的阈值和最大条目数。
  3. 执行命令生成慢查询日志: 执行一些常规命令,然后使用 jedis.eval 人为制造一个慢查询。
  4. 获取和打印慢查询日志: 使用 jedis.slowlogGet() 获取慢查询日志,并解析和打印每条日志的详细信息。
  5. 清除慢查询日志: 使用 jedis.slowlogReset() 清除慢查询日志。

监控和分析工具

除了 Redis CLI 和 Jedis 库,还可以使用一些专门的监控和分析工具来查看和分析慢查询日志:

  1. Redis Sentinel:主要用于高可用性监控,但也提供了一些性能监控功能。
  2. Redis Exporter:用于将 Redis 指标导出到 Prometheus。
  3. Grafana:与 Prometheus 配合使用,可以图形化展示 Redis 的监控指标,包括慢查询日志。
  4. Redis Insight:Redis Labs 提供的图形化管理工具,可以查看和分析慢查询日志。

示例:使用 Redis Exporter 和 Prometheus 监控慢查询

  1. 安装 Redis Exporter
1docker run --name redis_exporter -d -p 9121:9121 oliver006/redis_exporter
2
  1. 配置 Prometheus

在 Prometheus 的配置文件 prometheus.yml 中添加 Redis Exporter 的目标:

1scrape_configs:
2  - job_name: 'redis'
3    static_configs:
4      - targets: ['localhost:9121']
5
  1. 启动 Prometheus
1docker run --name prometheus -d -p 9090:9090 -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
2
  1. 在 Grafana 中配置 Prometheus 数据源

在 Grafana 中添加 Prometheus 作为数据源,并创建仪表板来监控 Redis 的慢查询日志。

总结

通过 Redis 的慢查询日志功能,可以有效地监控和优化 Redis 实例的性能。结合 Redis CLI、Jedis 库和专门的监控工具,可以详细了解和分析 Redis 的慢查询情况。在具体应用中,可以根据实际需求选择合适的监控方案,不断优化和调整,以达到最佳性能。


Redis(58)如何配置和查看Redis的慢查询日志?》 是转载文章,点击查看原文


相关推荐


走进 OpenCV 人脸识别的世界
过往入尘土2025/10/11

引言:走进 OpenCV 人脸识别的世界 在当今数字化时代,人脸识别技术作为生物特征识别领域的关键技术之一,正以前所未有的速度融入人们的生活,展现出巨大的应用潜力与价值。它通过计算机视觉技术对人脸图像或视频中的人脸特征进行提取、分析和比对,从而实现身份识别、验证等功能,广泛应用于安防监控、金融支付、门禁系统、智能交通、社交媒体等诸多领域,为人们的生活和工作带来了极大的便利与安全保障。 在安防监控领域,人脸识别技术可实时监测人员出入情况,对潜在的安全威胁进行预警。例如,在机场、火车站等交通枢纽


AI辅助制作宣传视频
Enabler_Rx2025/10/10

首先写好文字稿子,然后用google gemini模型生成音频。可以选择很多种人声,我选择了language English(US)和callirrhoe的发声,模型文生音频链接: https://cloud.google.com/text-to-speech?hl=zh-CN 然后下载音频文件 使用Microsoft Clipchamp打开音频文件,插入图像内容,可以调节音频速度,加入字幕等 然后导出生成文件 完成!


前端必看!12个JS神级简写技巧,代码效率直接飙升80%,告别加班!
刘大华2025/10/8

前言 哈喽大家好,我是大华。 在日常开发中,我们经常会遇到一些重复、冗长的代码。写起来费劲,读起来费神,维护起来更是头疼。而且代码越复杂,性能可能越受影响。 那有没有办法让代码更简洁、清晰又高效呢? JavaScript提供了许多现代语法特性,合理使用这些简写技巧,不仅能大幅减少代码量,还能提升可读性和执行效率。 很多资深前端都在用,这篇文章整理了 12 个最实用的 JS 简写技巧,并结合实际场景进行优化和补充,帮助你写出更优雅的代码。 1. 短路运算符:替代简单的 if 判断 以前我们这样写


【玩泰山派】4、制作ubuntu镜像-(5)总结制作ubuntu22.04镜像+5.10内核流程
风为你而吹2025/10/7

文章目录 前言rk镜像概念rk镜像构成生成sd卡镜像 制作根文件系统流程概述文件概述执行流程执行./mk-base-debian.sh执行mk-buster-rootfs.sh执行./mk-image.sh 总结 使用docker容器基于鲁班猫的仓库制作泰山派的ubuntu22.04根文件系统前言流程制作docker镜像启动docker容器进入容器进入容器后执行step1.准备step2.构建基础 Ubuntu 系统。step3.添加 rk overlay 层,并打包ubuntu


DrissionPage爬取汽车之家:(车名 + 颜色 + 车辆型号/续航里程)
python全栈蛇行者2025/10/5

DrissionPage爬取汽车之家 效果展示 项目概述与背景 在当今大数据时代,网络数据采集已成为获取信息的重要手段。本教程将全面详细介绍如何使用Python的DrissionPage库结合其他工具爬取汽车之家网站(https://www.autohome.com.cn/price/levelid_1)的汽车数据。汽车之家作为国内领先的汽车资讯平台,包含了丰富的汽车信息数据,这些数据对于汽车市场分析、竞品研究、价格监控等具有重要价值。 本项目旨在通过自动化技术手段,高效地采集汽


UNIX下C语言编程与实践5-C 语言编译器 cc(gcc/xlc)核心参数解析:-I、-L、-D 的使用场景与实例
迎風吹頭髮2025/10/4

一、引言:为什么需要关注 cc 编译器参数? 在 UNIX 环境下,C 语言编译器(如 gcc、xlc,统一简称 cc)是开发的核心工具。当项目规模超过单个文件、依赖第三方库或需要条件编译时,仅靠默认编译命令(如 cc main.c -o main)会频繁遇到「头文件找不到」「库链接失败」「宏定义未生效」等问题。 本文聚焦 cc 编译器中最核心的三个参数:-I(加载头文件路径)、-L(加载库文件路径)、-D(宏定义),结合实际项目案例解析其作用、使用场景及常见问题,同时拓展其他实用参数,帮助


介绍一种新的向量存储格式:DiskBBQ
Elastic 中国社区官方博客2025/10/3

作者:来自 Elastic Benjamin Trent, John Wagster 及 Ignacio Vera Sequeiros 介绍 DiskBBQ,一种 HNSW 的替代方案,并探讨何时以及为何使用它。 测试 Elastic 的领先开箱即用能力。深入我们的示例笔记本,开始免费的云试用,或立即在本地机器上尝试 Elastic。 DiskBBQ 是 Inverted Vector File (IVF) 索引的进化版。它是 Hierarchical Navigable Sm


vue2到vue3快速上手入门
cz橙2025/10/2

vue3 需要会vue2,该文档笔记基于黑马的课,进阶快速入门vue3 vue3 官方文档:https://v3.cn.vuejs.org/ main.js改变 import { createApp } from 'vue' import App from './App.vue' const app = createApp(App) app.mount('#app') /* 挂载app到id为app的元素上 */ 不需要new Vue(),直接createApp(App) App.


Mock数据与真实API的无缝切换:联调阶段的核心技术
_5792025/10/2

在现代软件开发中,尤其是在多系统、多平台的应用环境下,如何高效地进行数据集成和接口联调一直是一个挑战。随着开发流程的不断优化,Mock数据和真实API的无缝切换成为了开发和测试过程中的一个关键环节。本文将详细探讨如何实现Mock数据与真实API的无缝切换,并分享在联调阶段的核心技术及最佳实践。??Mock数据与真实API的背景概述在开发初期,API的设计和实现往往会滞后于前端界面的开发。此时,为了保证前端开发能够顺利进行,开发人员通常会使用Mock数据来模拟真实API的响应。这种方法可以帮助开发


没电脑=不能写代码?为什么我一个高中生能在手机上码 1万多行 C++,造了一个 GUI 库和一款肉鸽游戏?
Gamexyrs10/2/2025

当所有人都在说手机编程不可能,当别人在电脑上用 VS 欻欻欻敲代码时,我用 MT 管理器敲屏幕编代码,用 C4Droid编译打包程序。做了自己的界面库,做了自己的游戏。这篇文章主要介绍了我是怎么单凭手机一步步走过来的,也想为跟我相似的人提供一些方法。支持开源:所有代码已在 Github 开源,可在文章末尾链接查看。

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0