moon run cmd/cli --target native -- --port 6399 PING
moon run cmd/cli --target native -- --port 6399 SET name moonbit
moon run cmd/cli --target native -- --port 6399 GET name
moon run cmd/cli --target native -- --port 6399 RPUSH list a b c
moon run cmd/cli --target native -- --port 6399 LRANGE list 0 -1
4. Python 示例
python examples/quickstart.py
也可以用任意 Redis 客户端连接 127.0.0.1:6399,例如:
redis-cli -p 6399 SET hello world
redis-cli -p 6399 GET hello
moonredis
一个用 MoonBit 实现的轻量级、Redis 协议兼容的内存数据库服务器。
moonredis 从零实现了 RESP(REdis Serialization Protocol)编解码、五种核心数据结构、键过期、事务(MULTI/EXEC)、发布订阅和 AOF 追加持久化,并通过一个自研的跨平台 TCP 桥接层在 Windows / Linux / macOS 上以原生二进制运行。
特性
+、-、:、$、*、_、#、,、>均可解析和编码,兼容redis-cli与常见客户端EXPIRE/PEXPIRE/TTL/PTTL/PERSIST,时钟可注入,便于确定性测试MULTI/EXEC/DISCARD,命令排队后原子执行SUBSCRIBE/UNSUBSCRIBE/PUBLISH,单线程事件循环内投递moonredis-cli可执行单条命令快速开始
1. 构建
要求:MoonBit 工具链(
moon)与 C 编译器(Linux/macOS 自带 gcc/clang;Windows 推荐 w64devkit 并把其bin加入PATH)。2. 启动服务器
启用 AOF 持久化:
3. 使用 CLI
4. Python 示例
也可以用任意 Redis 客户端连接
127.0.0.1:6399,例如:已支持命令
连接与服务器:
PINGECHOHELLOCOMMANDQUITSELECTAUTHINFOCONFIG GET/SETCLIENT ID/SETNAME/GETNAME/LISTSAVESHUTDOWN键:
DELEXISTSKEYSTYPEEXPIREPEXPIRETTLPTTLPERSISTDBSIZEFLUSHDBFLUSHALLString:
SETSETNXSETRANGEGETGETRANGEGETDELMGETMSETMSETNXAPPENDSTRLENINCRDECRINCRBYDECRBYList:
LPUSHRPUSHLPOPRPOPLLENLRANGELINDEXLSETLTRIMHash:
HSETHMSETHSETNXHGETHGETALLHDELHEXISTSHLENHSTRLENHKEYSHVALSSet:
SADDSREMSMEMBERSSISMEMBERSCARDSPOPSorted Set:
ZADDZRANGE [WITHSCORES]ZSCOREZRANKZREVRANKZREMZCARDZINCRBY事务:
MULTIEXECDISCARD发布订阅:
SUBSCRIBEUNSUBSCRIBEPUBLISH架构
核心协议与数据结构不依赖任何 FFI,可在 WASM 等目标上编译测试;只有
native/和server/需要原生环境。测试
覆盖 RESP 编解码、五种数据结构、过期、命令分发、事务、Pub/Sub、AOF 文件往返(含 Unicode 路径)。
键空间命令额外支持
RENAME、RENAMENX和TOUCH,重命名时保留 TTL。设计说明与限制
License
Apache-2.0
来源与合规
项目为原创 MoonBit 实现,未复制 Redis 或第三方 Redis 兼容服务器源码。协议兼容性范围、设计取舍和原生 C shim 来源说明见 docs/COMPATIBILITY.md 与 docs/SOURCES.md。
参赛与维护
OSC 2026 申请人与仓库维护者关系见 docs/PARTICIPATION.md。