纯 Rust、零依赖、Redis 兼容的 serving engine。
一个引擎,三种形态:独立服务器、进程内 Rust
库、以及在浏览器里运行的 WebAssembly 模块。每种形态都讲
RESP2 —— redis-cli 和所有 Redis 客户端库
无需修改即可使用。
安装
# 服务器 cargo install kevy # 容器 docker run --rm -p 6379:6379 goliakk/kevy:latest # 浏览器 npm i @goliajp/kevy
实测 · 四方对打
用测量说话,不用口号。
1.60×redis 8 (GET)
3.00×valkey 9.1 (GET)
3.60×dragonfly (GET)
| server | 配置 | GET ops/s | SET ops/s | 相对值 (GET) |
|---|---|---|---|---|
| kevy 3.18.0 | --threads 8, io_uring | 6,389,776 ±2.8k | 6,384,676 ±582k | |
| redis 8 (8.4.x) | --io-threads 8 | 3,996,004 ±198k | 2,460,024 ±112k | |
| valkey 9.1 | --io-threads 8 | 2,132,196 ±68k | 1,598,402 ±0.1k | |
| dragonfly (2025-06) | --proactor_threads=8 | 1,776,199 ±42k | 1,453,224 ±28k |
协议:redis-benchmark -c 50 -P 16 -n 8M -t get,set,
5 次运行取中位数 ± 样本标准差。同一台机器(i7-10700K,8C16T,Linux 6.12)
公平对打:服务器绑核 0–7,基准客户端绑核 8–15;所有服务器用同一客户端、
同一协议、同一机器测得。
复现见 bench/arena.sh,
完整分解见
bench/PERF-DECOMP-V4-T9.md。
能力 · 同一引擎
下层 Redis 对等,上层 serving engine。
Redis 兼容 KVRESP2 线协议;98 条命令的应答与 valkey 9.1 逐字节核对。字符串、哈希、列表、集合、有序集合、TTL。
声明式索引范围 / 唯一二级索引在写路径上维护 —— 永不漂移、可从数据重建,并带一跳 hydration(
IDX.*)。CJK 全文检索免词典的 CJK bigram 切分 + BM25 排序,作为一种索引 —— 同一查询面、同一 hydration。
向量检索HNSW ANN 索引,外加服务端混合检索:一条查询完成 BM25 × KNN 融合。
CDC feed带
(generation, offset) 位点与精确恢复点的变更流 —— 内建的 outbox。复制与故障切换带心跳 / ACK 真实滞后的流式复制、计划内零丢失交棒(
FAILOVER)、quorum 崩溃选举。一致性阶梯按请求粒度可选:
WAIT、read-your-writes token、bounded staleness、quorum 围栏写。MCP 服务器官方
kevy-mcp:面向 AI agent 的 stdio JSON-RPC,schema 与 COMMAND DOCS 出自同一动词契约。WebAssembly浏览器里的引擎(
@goliajp/kevy):OPFS / IndexedDB 持久化、跨 tab pub/sub、零依赖。嵌入式与 IoT
kevy-embedded 按 feature 裁剪至最小 KV+TTL 内核;musl / ARM 交叉编译与体积 / RSS 预算门禁常驻 CI。在线演示 · WebAssembly
现在,就在这个浏览器里跑 kevy。
演示会把真实引擎作为约 420 KB 的 wasm 模块 载入:浏览器 API 之上的命令行 REPL、刷新后依然还在的 OPFS 持久化(IndexedDB 兜底)、跨 tab 的 pub/sub。没有后端,数据 不出你这台机器。