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

3.9 KiB
Raw Blame History

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 命令:

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 的后续命令都在目标库执行:

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 环境缺口。