Beekeeper Studio 连接 Redis 完全指南:ACL 认证、TLS/SSH 与 ReJSON 支持
2026/9/13 18:54:43 网站建设 项目流程

Beekeeper Studio 连接 Redis 完全指南:ACL 认证、TLS/SSH 与 ReJSON 支持

【免费下载链接】beekeeper-studioModern and easy to use SQL client for MySQL, Postgres, SQLite, SQL Server, and more. Linux, MacOS, and Windows.项目地址: https://gitcode.com/GitHub_Trending/be/beekeeper-studio

导读

本指南基于 Beekeeper Studio 官方用户手册与仓库源码,完整讲解如何通过图形界面连接 Redis 实例。你将掌握连接表单中每个字段的含义与默认值、Redis 6+ ACL 用户名认证的正确填写方式、TLS/SSL 加密连接与 SSH 隧道两种安全通道的使用场景,以及 ReJSON 模块下 JSON 文档的浏览与编辑能力。同时结合 Redis 客户端实现 的源码细节,帮助你理解 Beekeeper Studio 底层是如何与 Redis 通信的。

连接 Redis 的基本步骤

在 Beekeeper Studio 中连接 Redis 非常直接:新建连接时,从连接类型(Connection Type)下拉框中选择Redis,填写连接信息后点击Connect即可完成连接。仓库中 Redis 的方言定义(apps/studio/src/shared/lib/dialects/redis.ts)为该类型专门配置了 Redis 命令编辑器模式(text/x-redis),连接后即可开始操作。

连接表单本身复用了所有数据库通用的服务器输入组件(apps/studio/src/components/connection/RedisForm.vue),其核心输入项与默认值如下:

字段说明默认值
HostRedis 服务器的 IP 地址或主机名127.0.0.1
PortRedis 服务器监听的端口6379
UsernameRedis 用户名(可选,Redis 6+ 配合 ACL 使用)
PasswordRedis 密码(可选)
Database目标数据库编号0

端口默认值6379在源码中有多处印证:连接模型 saved_connection.ts 中redis类型的默认端口为6379,客户端注册表 clients/index.ts 中同样声明了defaultPort: 6379以及defaultDatabase: '0'。数据库编号会直接传入底层 Redis 客户端(database: parseInt(this.database.database, 10) || 0),用于选择逻辑数据库。

用户名认证:适配 Redis 6+ 的 ACL

Redis 6 引入了访问控制列表(Access Control Lists,ACL),允许管理员创建多个拥有不同权限的用户。如果你的 Redis 服务器启用了 ACL,在连接表单中同时填写UsernamePassword即可。

  • 使用 ACL 的 Redis 6+ 实例:同时填写用户名与密码;
  • 仅使用密码认证的旧版 Redis:保持用户名为空,只填写密码。

该行为在客户端实现中完全对应:connect() 方法 创建连接时,username只在配置了用户时传入(this.server.config.user || undefined),password则始终传递。另外,客户端在连接建立后会调用HELLO握手探测服务器的 RESP 协议版本(getRespVersion(),默认按 RESP2 处理),以决定后续命令返回值的解析方式。

需要注意,Redis 官方默认配置下服务端未设置密码且仅启用默认default用户,此时用户名密码均可留空直接连接。

支持的连接特性与安全通道

连接 Redis 后,Beekeeper Studio 提供以下核心能力:

  • 键(Key)的浏览与查看;
  • 键值的编辑;
  • 面向 Redis 命令的 AI Shell 支持;
  • ReJSON 模块支持:查看与编辑存储在 Redis 中的 JSON 文档;
  • SSH 隧道连接;
  • TLS/SSL 加密连接。

关于能力边界,从源码可以看到真实情况:客户端注册表 clients/index.ts 中 Redis 类型禁用了server:schemaserver:domainserver:ssh等特性标注,但从RedisClient.supportedFeatures()(redis.ts)的实现看,SSH 隧道与 TLS 的连接选项实际由通用连接框架提供;同时客户端明确实现了truncateAllTables()(对应FLUSHDB)与getTableLength()(对应DBSIZE)等运维操作。

注:连接表单中的 SSH 隧道与 TLS 配置项由 Beekeeper Studio 通用连接面板提供,未在 Redis 专用表单中单独实现,实际可用性以你安装版本的界面为准。

ReJSON 模块支持:JSON 文档的查看与编辑

如果你的 Redis 服务器安装了 ReJSON 模块(Redis Stack 的组成部分),Beekeeper Studio 可以显示并编辑通过JSON.SET写入的 JSON 值,且在值查看器中 JSON 数据会以语法高亮渲染。

从 fetchRedisValue() 的实现可以看到,读取 ReJSON 值时客户端调用json.get(key, { path: ["$"] })并返回路径$下的首个结果;写入时(setRedisValue()ReJSON-RL分支)调用json.set(key, "$", value)。也就是说,ReJSON 键在查看器中与普通 string 键一样可读可改,内部自动走 JSON 模块命令。

键浏览与编辑的底层机制

把 Redis 抽象成一张"keys 表"是 Beekeeper Studio 处理 Redis 的核心设计(redis.ts):

  • listTables()返回一张名为keys的逻辑表;listViews()返回一张名为info的逻辑视图;
  • keys表的列包括keyvaluetypeencodingttlmemory六列,其中type/encoding/memory为生成列,key被视为主键(getPrimaryKeys());
  • info视图的内容来自INFO命令的输出,被解析为键值对(parseInfo())。

当你浏览表数据时,客户端会执行SCAN命令游标式遍历(scanAll()支持MATCHCOUNTTYPE参数),随后对每个键并行调用TYPEMEMORY USAGEOBJECT ENCODINGTTL以及按类型取值的命令获取完整行信息。表头筛选输入框中的文本会被自动补上*通配符(selectTop()),转成SCAN ... MATCH pattern*执行,相当于 Redis 的键名模糊搜索。

针对不同数据类型,取值与写入分别映射如下:

Redis 类型读取命令编辑写入命令
stringGETSET(自动尝试按 JSON 解析)
listLRANGE key 0 -1删除后LPUSH(注意倒序插入)
setSMEMBERS删除后SADD
hashHGETALL删除后逐字段HSET
zsetZRANGE key 0 -1 WITHSCORES删除后ZADD
streamXRANGE key - +删除后按XADD逐条追加
ReJSON-RLJSON.GET key $JSON.SET key $ <value>

在结果网格中直接编辑单元格后,保存动作会触发executeApplyChanges()(redis.ts):对key列的修改转为RENAME,对ttl列的修改转为EXPIRE/PERSIST-1表示持久化),对value列的修改则先判断现有键类型、必要时从值结构推断类型(inferTypeFromValue()),再走上表对应的写入命令;删除行对应DEL,新增行则先创建空字符串键(SET key "")。

在查询编辑器中执行 Redis 命令

Beekeeper Studio 为 Redis 提供了命令编辑器(编辑器模式text/x-redis),你可以在查询标签页中直接输入并执行原生 Redis 命令。底层executeCommand()(redis.ts)的实现要点:

  • 支持一次输入多行命令,按行拆分、逐条执行,#开头的行为注释被跳过;
  • 使用redis-splitargs解析命令行,并从内置于 ui-kit 的redisCommands.json命令文档中识别命令名;
  • 执行走sendCommand(),并利用 Redis 官方命令定义表(@redis/client的 COMMANDS)将原始回复按 RESP 版本转换(例如SET类命令、ZRANGE ... WITHSCORES会被转换成{value, score}对象数组);
  • 结果渲染做了友好化处理:INFO解析为键值对、SCAN/HSCAN/SSCAN/ZSCAN解析为游标结果集、普通对象/数组/标量分别以合适的表格形式呈现;
  • 只读模式下(连接配置了 Read-Only),非只读命令会被拦截并返回错误提示;
  • Redis 命令无法取消,cancel()为空实现。

例如输入:

SET user:1 "{\"name\":\"Alice\"}" GET user:1 INFO server

会依次返回各命令的结果:SET返回OKGET返回 JSON 字符串,INFO server则以键值对表格展示服务器信息(包含redis_version等字段,集成测试 redis.spec.ts 中有对应断言)。

集成测试验证

仓库为 Redis 客户端提供了完整的集成测试(apps/studio/tests/integration/lib/db/clients/redis.spec.ts),测试通过 Testcontainers 启动真实的 Redis 容器(初始化脚本位于 dev/docker_redis/),覆盖了键的增删改查、各数据类型读写、EVAL/SCRIPT LOAD脚本命令、INFO解析以及ZRANGE WITHSCORES的转换等场景。这意味着本指南描述的行为均经过真实 Redis 实例的验证,可放心作为使用参考。

常见问题排查建议

  • 认证失败:确认 Redis 版本;Redis 6+ 启用 ACL 时需同时填写用户名与密码,旧版只填密码并保持用户名为空;
  • 连接超时:检查 Host/Port 是否与redis.conf中的bindport一致,并确认服务器防火墙放行了6379端口;
  • 远程连接:建议优先使用 SSH 隧道,或在服务器启用 TLS 后勾选 SSL 并配置相应证书(客户端支持从sslCaFilesslCertFilesslKeyFile读取 PEM 证书内容,参见 connect());
  • 看不到键:确认选择了正确的 Database 编号(Redis 默认 16 个逻辑库,客户端通过CONFIG GET databases探测数量,失败时回退为 16);
  • 只读模式下命令被拒:连接若启用了 Read-Only 模式,SETDEL等写命令会被拦截,仅可执行只读命令。

小结

连接 Redis 只需在连接类型中选择Redis并填写主机、端口,必要时补充用户名与密码。在此基础上,Beekeeper Studio 通过"keys 逻辑表 + SCAN 游标 + 按类型映射读写命令"的抽象,提供了键浏览、值编辑、TTL 修改、命令编辑器以及 ReJSON JSON 文档查看等一整套可视化操作能力,并通过 TLS/SSH 保障远程连接安全。如需更多连接与配置细节,可继续阅读 连接指南 与 支持的数据库总览。

【免费下载链接】beekeeper-studioModern and easy to use SQL client for MySQL, Postgres, SQLite, SQL Server, and more. Linux, MacOS, and Windows.项目地址: https://gitcode.com/GitHub_Trending/be/beekeeper-studio

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询