# @crvouga/mockingbird-service-redis 中文文档

规范地址：https://npmcn.com/package/%40crvouga/mockingbird-service-redis/

版本：2\.10\.9
npm 元数据更新时间：2026-11-03T01:31:28.153Z
中文译文更新时间：2026-11-11T02:36:15.025Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40crvouga/mockingbird-service-redis
原文对照：https://npmcn.com/package/%40crvouga/mockingbird-service-redis/?lang=original
项目主页：https://github.com/crvouga/mockingbird/tree/main/packages/service/redis#readme
源码仓库：https://github.com/crvouga/mockingbird

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.9 MB，18 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-10-01T12:43:38.742Z
- 最新版本发布：2026-11-03T01:31:27.778Z
- 近 30 天下载量：15757（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：26（近 12 个月 26 个）

## 中文简介

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

## 安装

```sh
npm install @crvouga/mockingbird-service-redis
```

也可以使用：`pnpm add @crvouga/mockingbird-service-redis`、`yarn add @crvouga/mockingbird-service-redis`、`bun add @crvouga/mockingbird-service-redis`

## README

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

> 本地模拟器。 真正的API合同. 部分 [嘲笑鸟](https://github.com/crvouga/mockingbird)。 。 。 .

测试过程中的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模块. 这一一揽子计划正在进行中.

## 安装

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

## 使用量

```ts
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车队. 见 [机队配置和控制](https://npmcn.com/docs/FLEETS.md) 名称空间 终点,准备,关闭 和协调的国家控制.

## API 密码

-   `createRedis(options?)` 返回 a `Redis` 举个例子.
-   `Redis` 拥有商店、钟表和测试控制(`client`, (中文(简体) ), `advance`, (中文(简体) ), `fault`, (中文(简体) ), `inspect`, (中文(简体) ), `pauseConsumers`, (中文(简体) ), `reset`, (中文(简体) ), `waiterCount`, (中文(简体) ), `close`) (中文(简体) ).
-   `RedisClient` 是一个连接 : `call`, (中文(简体) ), `raw`, (中文(简体) ), `pipeline`, (中文(简体) ), `quit`, (中文(简体) ), `onPush`,以及 `protocol`。 。 。 .
-   `RedisPipeline` 队列 `call`s和运行到 `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` 支持;见 [支助](https://npmcn.com/package/%40crvouga/mockingbird-service-redis/SUPPORT.md)。 。 。 .
-   露亚皮层(`coroutine.*` 存在并产生一个明确的“不支持”错误,”, `redis.setresp(3)` 和脚本时限(`SCRIPT KILL` 无法中断从未返回的脚本。 其余部分 卢亚5.1号是雷地斯船(标准图书馆, `cjson`, (中文(简体) ), `cmsgpack`, (中文(简体) ), `struct`, (中文(简体) ), `bit`已执行 并有区别地核对8.4.0再服务器;见 [支助](https://npmcn.com/package/%40crvouga/mockingbird-service-redis/SUPPORT.md)公牛MQ 5.76.2 队列/工人流量由公共客户套房覆盖.
-   `XADD` 编号 : `XTRIM` `MAXLEN ~` 精确的修饰.
-   设定成员按字节顺序返回,所以结果保持不变.

## 常见问题

### @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 和提交记录判断。

