Files
opsxdb/server/internal/docs/content/08-redis.md
T
logan 2c0bfafd8d 同步完整源码至远程:扁平化重构现状 + 未入库源文件
- 补入库:server/internal/db/dump.go、redis 分页/扫描预算测试、opsxdb-mcp main_test、
  packages/opsxdb-mcp package-lock、docs 审计与对比文档等 37 个新文件
- 含结构扁平化进行中的 80 处修改与 155 处旧结构删除(server/ src/ src-tauri/ 为当前有效源)
- 构建产物(bin/target/dist)与签名私钥仍按规则排除
2026-10-16 03:47:33 +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 当前行或选区 |
| 结果 | 结果表 | 命令结果表;从对象树打开键则进入键详情 |
独立 CLI Tab、单行命令与输出日志可在后续评估,不属于当前主路径。
## 键空间浏览
对象树对 Redis 显示 DB0–15(Cluster 仅 0)。展开库后:
- **SCAN 过滤**:输入 `user:*` 点「应用」;生产大库请带前缀,避免扫全库。最多展示 500 个键,超出提示截断。
- **按分隔符编文件夹**:连接表单的「键分隔符」默认 `:`,`CEX:FOLLOW:FOLLOWERS:1` 显示为 `CEX / FOLLOW / FOLLOWERS / 1`。文件夹显示数量;右键可「只看此前缀」「在此新建键」。
- **类型色点**:string 绿 / hash 蓝 / list 橙 / set 紫 / zset 青。
- **点键**:打开键详情(不是假 SELECT)。
## 键详情
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` 环境缺口。