ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ToolJet 集成 Redis 数据源:连接配置、命令查询与编解码实战

ToolJet 集成 Redis 数据源:连接配置、命令查询与编解码实战 ToolJet 集成 Redis 数据源连接配置、命令查询与编解码实战【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJetToolJet 内置了 Redis 数据源插件让你可以在低代码编辑器中直接对 Redis 实例执行任意 Redis 命令并将查询结果与前端组件联动。本文以官方文档为主线结合仓库中的插件源码plugins/packages/redis与测试文件系统讲解 Redis 数据源的添加方式、连接参数含 TLS 三种证书模式、命令查询流程以及SET/GET结合encodeURI与 Transformations 处理带空格数据的完整实战方案。读完本文你将能在 ToolJet 中独立完成 Redis 数据源的接入、测试与常用命令的调试。Redis 数据源插件总览在 ToolJet 中Redis 属于内置的数据库类数据源插件。与通过自定义插件市场安装的扩展不同Redis 连接器随主仓库一并维护其核心实现位于 plugins/packages/redis/lib/index.ts底层基于ioredis客户端驱动import Redis from ioredis; import { SourceOptions, QueryOptions } from ./types;插件清单文件 manifest.json 定义了数据源的元数据类型为database、kind为redis并声明了连接表单所需的全部字段host、port、username、password、database、ca_cert、client_key、client_cert 等。其中password、ca_cert、client_key、client_cert均标记为encrypted: true意味着这些敏感信息在存储时会被加密从表单输入到落库全程受到保护。连接 Redis两种入口与全部参数与 ToolJet 其他数据源一致连接 Redis 有两条路径查询面板入口在应用编辑器中点击底部查询面板的 Add new Data source按钮从列表中选择 Redis数据源管理入口从 ToolJet 仪表盘左侧导航进入 Data Sources 数据源总览页在 Databases 分类下找到 Redis 并点击Add。添加成功后该连接可被工作区内所有应用共享。连接表单需要填写以下参数参数说明默认值HostRedis 服务器的地址或主机名localhostPortRedis 服务器监听的端口6379Username用于认证的用户名Redis 6 ACL 用户空Password用于认证的密码空Database连接的逻辑数据库编号可选字段不指定TLS开关启用/禁用 TLS 加密连接关闭TLS Certificate证书类型None无、CA certificateCA 证书、Client certificate客户端证书None上述默认值并非凭空而来它们直接来自 manifest.json 的defaults段defaults: { host: { value: localhost }, port: { value: 6379 }, username: { value: }, password: { value: }, tls_enabled: { value: false }, tls_certificate: { value: none } }TLS 证书的三种模式开启TLS开关后还需选择证书类型不同选择对应不同的附加输入项None不校验服务器证书仅建立加密通道CA certificateCA 证书CA Cert用于 TLS 连接的 CA 证书内容Client certificate客户端证书即双向 TLS / mTLSCA Cert用于 TLS 连接的 CA 证书内容Client Key客户端私钥Client Cert客户端证书。这三个字段在表单中均为文本域textarea且与密码一样按加密字段处理。连接配置的底层实现从源码看连接参数如何被消费非常直观。lib/index.ts 中的getConnection方法把表单值透传给 ioredisreturn new Redis(port, host, { maxRetriesPerRequest: 1, username, password, tls: tls, ...(sourceOptions?.database { db: sourceOptions.database }), });值得注意的几个实现细节maxRetriesPerRequest: 1限制了单条命令的重试次数避免连接异常时查询长时间挂起database字段是可选的只有填写后才会以db选项传给 ioredis因此支持连接 Redis 的逻辑数据库db0–db15TLS 的校验行为与证书类型强相关lib/index.tsif (sourceOptions.tls_enabled) { tls {}; tls.rejectUnauthorized (sourceOptions.tls_certificate ?? none) ! none; if (sourceOptions.tls_certificate ca_certificate) { tls.ca sourceOptions.ca_cert; } if (sourceOptions.tls_certificate client_certificate) { tls.ca sourceOptions.ca_cert; tls.key sourceOptions.client_key; tls.cert sourceOptions.client_cert; } }即选择CA certificate或Client certificate时rejectUnauthorized为true严格校验服务器证书选择None时关闭证书校验。选择 Client certificate 时同时加载ca、key、cert三份材料构成完整的双向认证。测试连接连接表单通常提供Test connection按钮其对应插件源码中的testConnection方法lib/index.ts实现是对服务器执行一次PINGasync testConnection(sourceOptions: SourceOptions): PromiseConnectionTestResult { const client await this.getConnection(sourceOptions); try { await client.ping(); } catch (err) { client.disconnect(); throw new QueryError(Connection could not be established, err.message, {}); } return { status: ok }; }PING 成功即返回status: ok失败则抛出Connection could not be established并携带底层错误信息可作为排查主机、端口、认证与 TLS 配置是否正确的第一道验证。查询 Redis编辑器中执行任意命令连接建立后即可在应用中查询 Redis操作步骤如下点击编辑器底部查询管理器的 Add按钮选择上一步添加的Redis数据源在查询编辑器中输入命令点击Preview预览输出或点击Run执行查询。查询输入框的类型定义在 operations.json 中它是一个codehinter类型的编辑器placeholder为PING默认查询内容即为PING这意味着你可以在查询中直接书写任意 Redis 命令并能内嵌 ToolJet 的变量表达式。命令解析的底层原理为什么能支持任意 Redis 命令关键在于 lib/index.ts 中run方法的解析逻辑const splitQuery query.split( ); const command splitQuery[0]; const args splitQuery.length 0 ? splitQuery.slice(1) : []; result await client.call(command, args);查询文本按空格切分第一个 token 作为命令名其余 token 作为参数数组最终通过 ioredis 的client.call(command, args)动态执行。因此PING、SET、GET、EXPIRE、HSET、LPUSH乃至EVAL等命令均可直接使用无需在插件中逐一枚举。但这也带来一个关键约束命令与参数之间、以及多参数之间只能以空格分隔。一旦某个值本身包含空格例如人名 John Doe直接写入会被切分成多个参数导致命令语义错误——这正是原文档反复强调需要对值进行编码的根本原因。常用命令实战PING连通性自检PING用于测试与 Redis 的连接执行成功后服务器返回PONGPING在查询返回的数据中PONG即代表通道畅通这也是连接测试与日常排障中最常用的命令。SET写入键值SET用于为指定 key 赋值SET key value处理带空格的值当待写入的值包含空格时必须先编码再作为输入ToolJet 的编辑器支持内嵌 JS 表达式SET products {{encodeURI(John Doe)}}{{...}}是 ToolJet 的表达式语法这里用encodeURI将John Doe编码为John%20Doe从而避免空格破坏命令解析。下图展示了该查询在编辑器中的实际效果GET读取键值GET用于获取指定 key 的值GET key配合 Transformations 解码对于上一步用encodeURI写入的编码值直接读取会得到John%20Doe这种带百分号编码的字符串。要还原为可读的原始内容可利用查询的Transformations (JS)功能在编辑器中输入 GET 命令GET products开启 TransformationsJS写入解码逻辑return JSON.parse(decodeURI(data));这里data是查询返回的原始数据decodeURI将编码还原JSON.parse再把字符串解析为对象实现写入时编码、读取时解码的完整闭环。若写入的是纯字符串而非 JSON 序列化对象可直接写return decodeURI(data)。排障与进阶提示连接失败优先使用连接表单的 Test connection 触发 PING若返回Connection could not be established按顺序检查 Host/Port 可达性、ACL 用户名与密码、TLS 开关与证书内容尤其注意证书文本是否完整、含头尾标记。命令报错Query could not be completed该错误来自run方法对命令执行异常的包装lib/index.ts。常见诱因是参数含空格被错误切分——此时应回到encodeURI编码方案也可能是命令名拼写错误或参数类型不符。查询输入框的本质query 字段是codehinter代码高亮编辑器因此可以直接引用组件值、查询结果等运行时变量例如SET session:{{globals.currentUser.email}} {{encodeURI(components.textarea1.value)}}让 Redis 写入完全动态化。敏感字段保护密码与三类证书材料均按加密字段存储见 manifest.json 的encrypted标记涉及生产环境凭证时无需担心明文落库。掌握以上连接与查询方法后你就可以在 ToolJet 中把 Redis 作为缓存、会话存储或临时队列使用并与表格、文本输入等组件无缝联动。关于数据源的通用添加流程与多环境配置可继续阅读 Data Sources 数据源总览完整的 Redis 命令清单可参考 Redis 官方命令文档redis.io/commands。【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表