Data Query Tool - 一款轻量级的 Redis 与 MySQL 可视化管理工具

项目简介

在日常开发中,我们经常需要查看和操作 Redis 缓存数据、MySQL 数据库表结构。虽然市面上已有 Navicat、DBeaver、RedisInsight 等优秀的数据库管理工具,但它们往往体积庞大、安装繁琐,且需要分别安装不同的工具来管理不同类型的数据源。

Data Query Tool 是一款基于 Spring Boot 开发的轻量级 Web 应用,将 Redis 和 MySQL 的常用管理功能整合到统一的 Web 界面中,无需安装客户端,通过浏览器即可完成日常的数据查询和管理工作。

功能特性

:locked_with_key: 安全登录

  • 支持用户名密码登录

  • 连续输错 3 次密码自动锁定当天

  • Session 会话管理,保障访问安全

:red_circle: Redis 管理

  • Key 搜索:支持通配符模式匹配(如 user:**session*

  • 数据类型支持:String、List、Hash、Set、ZSet 全类型

  • Value 查看:点击 Key 即可查看详细内容,支持 JSON 格式化显示

  • Key 操作:支持新增、删除 Key,支持设置 TTL 过期时间

  • 统计信息:实时显示各类 Key 数量统计

:bar_chart: MySQL 管理

  • 多连接支持:可同时管理多个 MySQL 服务器连接

  • 树形目录:清晰展示数据库层级结构(数据库 → 表/视图/存储过程/事件)

  • 多 SQL 编辑器:支持同时打开多个 SQL 编辑器 Tab

  • 表数据浏览:双击表名即可分页查看数据

  • 表结构查看:一键查看字段定义、索引信息、建表语句

  • 右键菜单:支持查询数据、查看结构、复制表名等快捷操作

  • 数据库切换:顶部下拉框快速切换当前操作的数据库

:artist_palette: 现代化界面

  • 深色主题设计,护眼舒适

  • 响应式布局,适配不同屏幕尺寸

  • 类似 Navicat 的操作体验,上手零成本

技术栈

类别 技术
后端框架 Spring Boot 3.2
ORM 框架 MyBatis-Plus 3.5
缓存 Spring Data Redis + Lettuce
数据库 MySQL 8.0
模板引擎 Thymeleaf
前端 原生 HTML/CSS/JavaScript
构建工具 Maven

项目结构

redis-query-tool/
├── pom.xml                              # Maven 配置
├── sql/
│   └── init.sql                         # 数据库初始化脚本
├── src/main/
│   ├── java/com/example/redis/
│   │   ├── RedisQueryToolApplication.java    # 启动类
│   │   ├── config/                           # 配置类
│   │   │   ├── RedisConfig.java
│   │   │   └── WebConfig.java
│   │   ├── controller/                       # 控制器
│   │   │   ├── AuthController.java           # 认证
│   │   │   ├── DataSourceController.java     # 数据源管理
│   │   │   ├── QueryController.java          # 查询
│   │   │   └── PageController.java           # 页面路由
│   │   ├── entity/                           # 实体类
│   │   │   ├── SysUser.java
│   │   │   ├── DataSource.java
│   │   │   └── LoginFailRecord.java
│   │   ├── mapper/                           # MyBatis Mapper
│   │   ├── service/                          # 业务服务
│   │   │   ├── DynamicQueryService.java      # 动态查询核心
│   │   │   ├── DataSourceService.java
│   │   │   └── LoginFailRecordService.java
│   │   └── interceptor/                      # 拦截器
│   │       └── AuthInterceptor.java
│   └── resources/
│       ├── application.yml                   # 应用配置
│       └── templates/
│           ├── login.html                    # 登录页
│           └── index.html                    # 主界面
└── README.md

快速开始

1. 环境准备

  • JDK 17+

  • MySQL 8.0+

  • Redis 6.0+(可选)

  • Maven 3.6+

2. 初始化数据库

mysql -u root -p < sql/init.sql

这将创建 redis_query_tool 数据库及必要的表结构,并插入默认管理员账号。

3. 修改配置

编辑 src/main/resources/application.yml,修改数据库连接信息:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/redis_query_tool?...
    username: root
    password: 你的密码

4. 编译运行

# 方式一:Maven 运行
mvn spring-boot:run
​
# 方式二:打包运行
mvn clean package -DskipTests
java -jar target/redis-query-tool-1.0.0.jar

5. 访问应用

打开浏览器访问 http://localhost:8080

默认账号admin
默认密码admin13579

核心功能演示

添加数据源连接

点击顶部「添加连接」按钮,填写连接信息:

  • Redis 连接:主机地址、端口、密码(可选)

  • MySQL 连接:主机地址、端口、用户名、密码

支持「测试连接」功能,确保配置正确后再保存。

Redis 数据查询

功能说明:

  • 左侧树形目录显示 Redis 连接及 Keys

  • 顶部搜索栏支持通配符模式匹配(如 user:*

  • 表格展示 Key、类型、TTL、操作按钮

  • 点击「添加 Key」可新增 Redis 数据

  • 支持 String、List、Hash、Set、ZSet 全类型数据查看

操作步骤:

  1. 点击左侧 Redis 连接展开目录

  2. 输入 Key 模式(如 user:*)搜索

  3. 点击 Key 查看详细 Value

  4. 支持新增、删除 Key 操作

MySQL 数据管理

功能说明:

  • 左侧树形目录展示数据库层级:连接 → 数据库 → 表/视图/存储过程/事件

  • 顶部导航栏显示当前连接信息和数据库下拉选择器

  • 支持多 SQL 编辑器 Tab,可同时打开多个查询窗口

  • SQL 编辑器支持 Ctrl+Enter 快捷执行

  • 双击表名可在新 Tab 中查看表数据

操作步骤:

  1. 点击左侧 MySQL 连接展开目录树

  2. 在顶部下拉框选择要操作的数据库

  3. 展开数据库 → 表,双击表名查看数据

  4. 右键表名可查看结构、索引、建表语句

  5. 点击「新建SQL编辑器」打开多个编辑器 Tab

  6. 在 SQL 编辑器中编写查询语句,点击执行或按 Ctrl+Enter

技术亮点

动态数据源连接

不同于传统应用启动时固定数据源配置,本工具支持运行时动态创建连接

// 动态创建 Redis 连接
RedisConnectionFactory factory = createRedisConnectionFactory(dataSource);
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
template.afterPropertiesSet();
​
// 动态创建 MySQL 连接
Connection conn = DriverManager.getConnection(url, username, password);

用户可以随时添加新的 Redis/MySQL 连接,无需重启应用。

安全登录机制

实现了完整的登录安全策略:

// 连续失败检测
if (loginFailRecordService.isLocked(username)) {
    return "账号已被锁定,请明天再试";
}
​
// 记录失败次数
loginFailRecordService.recordFail(username, ip);
​
// 登录成功清除记录
loginFailRecordService.clearFailCount(username);

统一查询接口

设计了通用的查询服务层,支持多种数据源类型:

public Map<String, Object> executeQuery(DataSource ds, String query) {
    if ("redis".equals(ds.getType())) {
        return executeRedisQuery(ds, query);
    } else if ("mysql".equals(ds.getType())) {
        return executeMySqlQuery(ds, query);
    }
}

扩展性

项目采用模块化设计,易于扩展:

  • 新增数据源类型:只需实现对应的查询方法

  • 新增功能模块:遵循 Controller → Service → Mapper 分层架构

  • 前端定制:纯原生 JS 实现,无框架依赖,修改方便

总结

Data Query Tool 是一款轻量、实用的数据库管理工具,适合以下场景:

  • 开发环境快速查看 Redis/MySQL 数据

  • 运维人员远程管理数据库

  • 团队内部共享数据库连接信息

  • 学习 Spring Boot + MyBatis-Plus 项目实践

1 个赞

真挺厉害,安全不?

1 个赞

平台是 用什么存储的

1 个赞