项目简介
在日常开发中,我们经常需要查看和操作 Redis 缓存数据、MySQL 数据库表结构。虽然市面上已有 Navicat、DBeaver、RedisInsight 等优秀的数据库管理工具,但它们往往体积庞大、安装繁琐,且需要分别安装不同的工具来管理不同类型的数据源。
Data Query Tool 是一款基于 Spring Boot 开发的轻量级 Web 应用,将 Redis 和 MySQL 的常用管理功能整合到统一的 Web 界面中,无需安装客户端,通过浏览器即可完成日常的数据查询和管理工作。
功能特性
安全登录
-
支持用户名密码登录
-
连续输错 3 次密码自动锁定当天
-
Session 会话管理,保障访问安全
Redis 管理
-
Key 搜索:支持通配符模式匹配(如
user:*、*session*) -
数据类型支持:String、List、Hash、Set、ZSet 全类型
-
Value 查看:点击 Key 即可查看详细内容,支持 JSON 格式化显示
-
Key 操作:支持新增、删除 Key,支持设置 TTL 过期时间
-
统计信息:实时显示各类 Key 数量统计
MySQL 管理
-
多连接支持:可同时管理多个 MySQL 服务器连接
-
树形目录:清晰展示数据库层级结构(数据库 → 表/视图/存储过程/事件)
-
多 SQL 编辑器:支持同时打开多个 SQL 编辑器 Tab
-
表数据浏览:双击表名即可分页查看数据
-
表结构查看:一键查看字段定义、索引信息、建表语句
-
右键菜单:支持查询数据、查看结构、复制表名等快捷操作
-
数据库切换:顶部下拉框快速切换当前操作的数据库
现代化界面
-
深色主题设计,护眼舒适
-
响应式布局,适配不同屏幕尺寸
-
类似 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 全类型数据查看
操作步骤:
-
点击左侧 Redis 连接展开目录
-
输入 Key 模式(如
user:*)搜索 -
点击 Key 查看详细 Value
-
支持新增、删除 Key 操作
MySQL 数据管理
功能说明:
-
左侧树形目录展示数据库层级:连接 → 数据库 → 表/视图/存储过程/事件
-
顶部导航栏显示当前连接信息和数据库下拉选择器
-
支持多 SQL 编辑器 Tab,可同时打开多个查询窗口
-
SQL 编辑器支持 Ctrl+Enter 快捷执行
-
双击表名可在新 Tab 中查看表数据
操作步骤:
-
点击左侧 MySQL 连接展开目录树
-
在顶部下拉框选择要操作的数据库
-
展开数据库 → 表,双击表名查看数据
-
右键表名可查看结构、索引、建表语句
-
点击「新建SQL编辑器」打开多个编辑器 Tab
-
在 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 项目实践

