Files
opsxdb/apps/server/internal/docs/content/08-redis.md
T
logan a9510235bb
CI / Go server (push) Canceled after 0s
CI / Web + core packages (push) Canceled after 0s
CI / Desktop (Tauri) cargo check (push) Canceled after 0s
feat: 18 引擎驱动全家桶 + 驱动管理/离线包 + 设置中心 + 工作台交互打磨
驱动接入(全部本机真实例验收):
- Elasticsearch 原生 SQL API、InfluxDB 原生 HTTP+Flux(官方 JDBC 付费许可,实测弃用)
- ZooKeeper/MongoDB JVM agent(连接时自动下载官方驱动 jar,sha256 钉版本到 ~/.opsxdb/drivers/)
- 达梦 JDBC agent 桥就绪(待厂商 jar+实例);TiDB 真实例验收
- 协议族代码审查放行 PolarDB/TDSQL/OceanBase/Kingbase/GaussDB/Oracle
- 驱动能力模型:按驱动开关对象树分组/右键菜单/行编辑,NoSQL 树拍平(对象直挂库节点)

驱动管理:
- 驱动管理弹框(状态/预装/离线包导入/JDK 检测)+ /api/drivers/* 三接口
- opsxdb-driver 驱动商店仓库(清单/fetch.sh/pack.sh 离线包/import.sh)
- 连接时懒加载:DMG 零 Java 产物,首连自动下载(实测 ZK 九件套 1.35s),离线包自动回退

UI/交互:
- 设置中心(⚙):常规/执行/结果/驱动/快捷键/关于,左导航+右面板(对标 opsxshell)
- 实例级展开箭头(行首 SVG chevron,替代字体回退失真的 Unicode 三角)
- 树内嵌套渲染修复:对象树挂在激活连接下;工具栏窄窗口不断行(按钮 nowrap+整颗换行)
- 侧栏连接行精简(图标+连接名)、SQLite SSH 守卫、Oracle 死参数清理

质量:
- Go 协议层/离线回退单测、E2E 门控测试(ES/ZK/Influx/Mongo/TiDB/JDBC 桥)
- 驱动注册表单一事实来源 connection-types.json,README/BACKLOG/AGENTS 同步
2026-09-22 01:07:46 +08:00

94 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Redis 连接使用专用表单(redis)。连上后,对象树是键空间浏览器,编辑器是 Redis 命令行 —— **和 SQL 共用同一套输入框**,不另开 CLI 页。
## 为什么命令行不单独做一套
SQL 工作台已经有:多 Tab、⌘/Ctrl+Enter、查询历史、书签、危险确认、取消。Redis 命令同样是「输入 → 执行 → 结果表」。
拆成独立 CLI(终端 REPL)会让快捷键、历史、危险确认分叉,也和 Navicat 式多引擎工作台不一致。
因此:
| | SQL | Redis |
| --- | --- | --- |
| 输入框 | 同一 CodeMirror | 同一 CodeMirror(占位/补全换成命令) |
| 切分 | 分号语句 | **按行**(`SET k "a;b"` 不会被分号拆开) |
| 执行 | ⌘/Ctrl+Enter 当前语句或选区 | ⌘/Ctrl+Enter 当前行或选区 |
| 结果 | 结果表 | 命令结果表;从对象树打开键则进入键详情 |
Another Redis Desktop Manager 的独立 CLI Tab、opsxsql 的单行命令 + 输出日志,列为后续 P1,不是现在的主路径。
## 键空间浏览
对象树对 Redis 显示 DB0–15(Cluster 仅 0)。展开库后:
- **SCAN 过滤**:输入 `user:*` 点「应用」;生产大库请带前缀,避免扫全库。最多展示 500 个键,超出提示截断。
- **按分隔符编文件夹**:连接表单的「键分隔符」默认 `:`,`CEX:FOLLOW:FOLLOWERS:1` 显示为 `CEX / FOLLOW / FOLLOWERS / 1`。文件夹显示数量;右键可「只看此前缀」「在此新建键」。
- **类型色点**:string 绿 / hash 蓝 / list 橙 / set 紫 / zset 青。
- **点键**:打开键详情(不是假 SELECT)。
## 键详情
对标 Another Redis Desktop Manager 的 Hash/List/Set 视图:
- 类型徽章、键名(回车重命名)、TTL(回车或「保存 TTL」,`-1` 永久)、刷新、导出还原命令、删除;
- **结构**表:Hash 为 ID / Field / Value,JSON 值自动美化;可新增字段、编辑、删除;
- **JSON** 视图:整体格式化;
- 表内关键字过滤。
String 可直接改值保存。
## 命令执行
编辑器直接写 Redis 命令:
```bash
PING
SET demo:key "hello" EX 60
GET demo:key
HGETALL demo:hash
SCAN 0 MATCH demo:* COUNT 100
INFO memory
```
- 未点名的命令走通用 `Do`(`EXISTS` / `ECHO` / `INFO` / `CLIENT LIST` 等不必再加白名单);
- `FLUSHALL` / `FLUSHDB` / `KEYS` / `CONFIG` 仍要二段确认;
- `KEYS *` 在大库上会阻塞 —— 请用 `SCAN MATCH`。
### 切换逻辑库(SELECT)
`SELECT 1` 是 Redis 官方的切库命令,编辑器直接支持 —— 语义与 redis-cli 一致:**切换后本 Tab 的后续命令都在目标库执行**:
```bash
SELECT 1
GET db1:only:key # 在 db1 执行
```
- 没有也没有 `USE`(那是 SQL 语法)—— 输入 `USE db1` 会得到 Redis 原生报错
`ERR unknown command 'USE'`,与 redis-cli 行为一致;
- 切库只影响当前查询 Tab(多 Tab 可各连各的库),左侧对象树点开对应库可浏览键;
- Cluster 模式只有 DB 0,`SELECT` 无效。
## 连接参数
| 字段 | 说明 |
| --- | --- |
| host / port | 单机默认 127.0.0.1:6379 |
| password / user | ACL / requirepass |
| database | 逻辑库序号(0–15 常见;Cluster 忽略) |
| 键分隔符 | 对象树文件夹分隔,默认 `:` |
| ssl | TLS |
| redisMode | `standalone`(默认)/ `sentinel` / `cluster` |
| redisNodes | Sentinel / Cluster 节点列表,`host:port` 多行或逗号分隔 |
| masterName | Sentinel 主节点名(必填) |
| sentinelPassword | Sentinel 密码(可空) |
### Sentinel
模式选「哨兵」,填写至少一个 Sentinel 地址和 `masterName`(如 `mymaster`)。逻辑库序号仍可用。
### Cluster
模式选「集群」,填写至少一个种子节点。Cluster 不支持 `SELECT` 多库,对象树只暴露 DB 0。槽位路由由客户端处理,键浏览走 `SCAN`。
> **环境**:Sentinel / Cluster 表单与后端已接好;真实拓扑联调见 `docs/BACKLOG.md` 环境缺口。