这个项目能做什么
Node-Redis 是 Node.js 的官方 Redis 客户端,可通过 `npm install redis` 安装。该总包捆绑了 Redis Stack 模块支持;模块化包也单独发布:`@redis/client`(基础客户端和集群)、`@redis/bloom`、`@redis/json`、`@redis/search`、`@redis/time-series`,以及用于 Microsoft Entra ID 令牌认证的 `@redis/entraid`。
客户端通过 `createClient()` 创建,支持 `redis://` 和 `rediss://` 连接 URL、离散参数、UNIX 套接字和 TLS。`isReady` 和 `isOpen` 暴露连接状态。客户端是一个 EventEmitter,会发出 `connect`、`ready`、`end`、`error`、`reconnecting`、`terminated`、`invalidate` 和分片频道事件;必须设置 `error` 监听器以避免进程终止。
该 API 覆盖所有内置 Redis 命令,既以原始名称(`HSET`)暴露,也以 camelCase 别名(`hSet`)暴露,命令修饰符以 JavaScript 对象传入,回复会转换为原生结构(例如哈希变为对象)。通过 `withTypeMapping` 将 RESP blob 字符串映射为 `Buffer` 可支持二进制数据。未知命令可通过 `sendCommand()` 发送。
其他已记录的能力包括:
- 通过 `multi()`/`exec()` 实现事务,以及使用 `watch()` 实现乐观锁。
- 发布/订阅,包括分片频道。
- 用于 `SCAN`、`HSCAN`、`SSCAN` 和 `ZSCAN` 的异步迭代器,支持 `MATCH`、`COUNT` 和 `TYPE` 选项。
- 对同一事件循环 tick 内发出的命令进行自动管道化。
- v5 中的 `RedisClientPool`,用于隔离连接池,适用于阻塞命令。
- 基于 RESP3 的服务器辅助客户端缓存,具有可配置的 TTL、条目限制以及 LRU/FIFO 淘汰策略。
- 针对 Redis Cluster 和 Sentinel 部署的专门指南。
- Redis 8.4 引入的比较并设置/删除(CAS/CAD)操作,以及一个本地 XXH3 `digest` 辅助函数,该函数需要可选的 `@node-rs/xxhash` 对等依赖。
- 通过 `OpenTelemetry.init()` 实现 OpenTelemetry 指标集成(需要 `@opentelemetry/api` 和已配置的 SDK),并通过 Node.js `diagnostics_channel` 发布遥测数据以用于 APM 集成。
- 对 Lua 脚本和函数的可编程性支持。
README 提供了 ESM 和 CommonJS 示例、客户端配置详情,以及从 v3 到 v4 和从 v4 到 v5 的迁移指南。值得注意的 v5 API 变更包括 `close()` 取代 `quit()`,以及 `destroy()` 取代 `disconnect()`。该仓库采用 MIT 许可。
评论
0 评分人数达到10人后显示
登录后参与讨论。