@crvouga/mockingbird-service-redis

中文文档
2.10.9发布于 2026/11/03MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 1.6万

用于测试的进程中 Redis RESP 服务器:字符串,散列,列表,集,排序集,流,交易,pub/sub,以及一个Lua子集,带有一个被注入的时钟. 不是HTTP模拟器.

中文使用文档
文档目录4 节
  1. 安装
  2. 使用量
  3. API 密码
  4. 故意不模拟

@crvouga/mockingbird-service-restis-redis (英语)

本地模拟器。 真正的API合同. 部分 嘲笑鸟。 。 。 .

测试过程中的Redis. createRedis() 是纯TypeScript RESP商店:调用命令 redis.client(),或者对 TCP 服务器说 RESP (mockingbird-redis,或 serve 从 @crvouga/mockingbird-service-redis/server) (中文(简体) ). 这不是HTTP API 仿真器,没有 createRuntime。 。 。 . ./server 还出口 serveTarget这样 serve --config 可以启动它: GET /__admin/health 报告 service: redis,而RESP听 在电平 redis://127.0.0.1:<port> 启动时打印. mockingbird-redis 仍然绑定 6379 除非 --port 已经设定.

答复采用Redis命令参考的单一独立节点,并进行了抽查 对Redis 8.4.0。 所公布的版本为Redis 7.2.4,因此客户端不探测Redis 8模块. 这一一揽子计划正在进行中.

安装

npm install -D @crvouga/mockingbird-service-redis

使用量

import { Redis } from "ioredis"
import { createRedis, manualClock } from "@crvouga/mockingbird-service-redis"
import { serve } from "@crvouga/mockingbird-service-redis/server"

// Test setup: an emulator on a manual clock, listening on a free port. `as never` is needed
// because the two entry points bundle separate declarations of the `Redis` type.
const emulator = createRedis({ clock: manualClock(1_700_000_000_000) })
const server = await serve(emulator as never, { port: 0 })

// Application code: the ioredis client it already uses, connected to the emulator.
const redis = new Redis({ host: server.host, port: server.port })
console.log(await redis.set("lock", "token", "PX", 1000)) // OK

// Test control: expire the lock without sleeping.
emulator.advance(1000)
console.log(await redis.get("lock")) // null

await redis.quit()
await server.close()

两个 createRedis() 实例从不共享密钥. SELECT 在内部隔离逻辑数据库 0-15 一个例子. emulator.advance(ms) 移动注入的时钟. emulator.inspect(), (中文(简体) ), emulator.fault(), (中文(简体) ), emulator.pauseConsumers(), (中文(简体) ), emulator.reset(),以及 emulator.waiterCount() 是测试控件.

ioredis 连接到 TCP 服务器不变 。 组 MOVED 编号 : ASK 未执行 : CLUSTER 财务报告和审定财务报表 READONLY 回答集群支持已禁用.

mockingbird-redis serve --config mockingbird.json 监管混合HTTP/Postgres/Redis车队. 见 机队配置和控制 名称空间 终点,准备,关闭 和协调的国家控制.

API 密码

  • createRedis(options?) 返回 a Redis 举个例子.
  • Redis 拥有商店、钟表和测试控制(client, (中文(简体) ), advance, (中文(简体) ), fault, (中文(简体) ), inspect, (中文(简体) ), pauseConsumers, (中文(简体) ), reset, (中文(简体) ), waiterCount, (中文(简体) ), close) (中文(简体) ).
  • RedisClient 是一个连接 : call, (中文(简体) ), raw, (中文(简体) ), pipeline, (中文(简体) ), quit, (中文(简体) ), onPush,以及 protocol。 。 。 .
  • RedisPipeline 队列 calls和运行到 exec。 。 。 .
  • RedisConnectionError 是一个已关闭的连接、 超时故障或关闭的服务器 .
  • RedisReplyError 是 Redis 错误回复 call。 。 。 .
  • manualClock(start) 仅在 advance 名为. wallClock 如下 Date.now()。 。 。 .
  • encodeReply(reply, protocol) 写入 RESP2 或 RESP3 框架 .

故意不模拟

  • 集群重定向(MOVED, (中文(简体) ), ASK)和复制复制. ROLE 留下来 master。 。 。 .
  • Redis 8 个模块,以及完整的 Redis 命令集. ACL SETUSER编号 :GETUSER编号 :DELUSER编号 :CAT编号 :LOG编号 : GENPASS编号 :DRYRUN编号 :LOAD编号 :SAVE, (中文(简体) ), MEMORY DOCTOR编号 :STATS编号 :MALLOC-STATS, (中文(简体) ), COMMAND GETKEYSANDFLAGS 财务报告和审定财务报表 COMMAND HELP 返回一个“ 不为Mockingbird Redis 模拟器所支持的” 明文错误 .
  • 最好的猜测,不是甲骨文验证: MEMORY USAGE 字节数, OBJECT ENCODING 阈值 HSCAN编号 :SSCAN编号 :ZSCAN 光标收藏量太大, 无法进行紧凑编码, a SLOWLOG 从来没有记录. MONITOR 支持;见 支助。 。 。 .
  • 露亚皮层(coroutine.* 存在并产生一个明确的“不支持”错误,”, redis.setresp(3) 和脚本时限(SCRIPT KILL 无法中断从未返回的脚本。 其余部分 卢亚5.1号是雷地斯船(标准图书馆, cjson, (中文(简体) ), cmsgpack, (中文(简体) ), struct, (中文(简体) ), bit已执行 并有区别地核对8.4.0再服务器;见 支助公牛MQ 5.76.2 队列/工人流量由公共客户套房覆盖.
  • XADD 编号 : XTRIM MAXLEN ~ 精确的修饰.
  • 设定成员按字节顺序返回,所以结果保持不变.

版本与发布记录

@crvouga/mockingbird-service-redis 共发布 26 个版本,首次发布于 2026/10/01;过去 12 个月发布了 26 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.10.9latest2026/11/038 天前
2.10.82026/11/038 天前
2.10.72026/11/038 天前
2.10.62026/11/038 天前
2.10.52026/11/038 天前
2.10.42026/11/038 天前

关于 @crvouga/mockingbird-service-redis 的常见问题

@crvouga/mockingbird-service-redis 是什么?

用于测试的进程中 Redis RESP 服务器:字符串,散列,列表,集,排序集,流,交易,pub/sub,以及一个Lua子集,带有一个被注入的时钟. 不是HTTP模拟器.

如何安装 @crvouga/mockingbird-service-redis?

在项目目录运行 npm install @crvouga/mockingbird-service-redis,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 mockingbird-redis,可以用 npx mockingbird-redis 直接运行。

@crvouga/mockingbird-service-redis 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@crvouga/mockingbird-service-redis 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@crvouga/mockingbird-service-redis 可以商用吗?

@crvouga/mockingbird-service-redis 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@crvouga/mockingbird-service-redis 的下载量有多少?

根据 npm 官方下载统计,@crvouga/mockingbird-service-redis 在 2026/10/11 – 2026/11/09 这 30 天内被下载 15,757 次,日均约 525 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@crvouga/mockingbird-service-redis 还在维护吗?

最新版本 2.10.9 发布于 2026/11/03(8 天前);至今共发布 26 个版本,其中过去 12 个月发布了 26 个;首次发布于 2026/10/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。