@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?)返回 aRedis举个例子.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光标收藏量太大, 无法进行紧凑编码, aSLOWLOG从来没有记录.MONITOR支持;见 支助。 。 。 . - 露亚皮层(
coroutine.*存在并产生一个明确的“不支持”错误,”,redis.setresp(3)和脚本时限(SCRIPT KILL无法中断从未返回的脚本。 其余部分 卢亚5.1号是雷地斯船(标准图书馆,cjson, (中文(简体) ),cmsgpack, (中文(简体) ),struct, (中文(简体) ),bit已执行 并有区别地核对8.4.0再服务器;见 支助公牛MQ 5.76.2 队列/工人流量由公共客户套房覆盖. XADD编号 :XTRIMMAXLEN ~精确的修饰.- 设定成员按字节顺序返回,所以结果保持不变.