常见的 kv 服务
🕐
我想自己搭建一个简单的kv服务,最好是 go 的,启个server就行的那种。github 有什么好的开源项目推荐?
推荐几个Go 轻量、开箱即用、一键启动的 KV Server 开源项目,按“极简→轻量→功能全”排序,满足你“启个server就行”的需求。
一、极简入门(最适合快速搭建)
1. GoKV(最推荐,Redis 兼容)
- 地址:https://github.com/TechGeeks-Club/GoKV
- 特点:纯内存、RESP 协议兼容 Redis,一行命令启动,用
redis-cli直接连 - 启动:
bash go run ./cmd/gokv/main.go redis-cli -p 6379 - 支持:
SET/GET/DEL/EXISTS/INCR/TTL等基础命令,代码极短(几百行),适合学习与二次开发
2. AmrSaber/kv(命令行+HTTP 双模式)
- 地址:https://github.com/AmrSaber/kv
- 特点:单二进制、HTTP API + CLI 工具,无外部依赖
- 启动:
bash go install github.com/AmrSaber/kv@latest kv server --port 8080 - 使用:
curl http://localhost:8080/set?key=foo&value=bar
二、轻量持久化(带磁盘存储)
3. mini-kvstore-go(生产可用,HTTP API)
- 地址:https://github.com/whispem/mini-kvstore-go
- 特点:持久化、分段日志、压缩、崩溃恢复,HTTP 接口,适合小型生产场景
- 启动:
bash git clone https://github.com/whispem/mini-kvstore-go cd mini-kvstore-go go run main.go - API:
POST /api/v1/kv(Set)、GET /api/v1/kv/{key}(Get)
4. redix(超轻量持久化 KV)
- 地址:https://github.com/alash3al/redix
- 特点:纯 Go、文件持久化、TCP+HTTP 双协议,代码极简
- 启动:
bash go get github.com/alash3al/redix redix --port 6379
三、嵌入式+服务化(灵活扩展)
5. olric(分布式内存 KV,可单机)
- 地址:https://github.com/olric-data/olric
- 特点:可单机可分布式、Redis 兼容、支持过期/持久化,一键单机启动
- 启动:
bash go install github.com/olricdata/olric/cmd/olricd@latest olricd
6. nutsdb(嵌入式持久化,可包装成服务)
- 地址:https://github.com/xujiajun/nutsdb
- 特点:纯 Go、事务、多种数据结构,自己套一层 HTTP/TCP 就是服务
- 示例:几十行代码即可包装成 HTTP KV Server
四、快速选型对比
| 项目 | 协议 | 持久化 | 启动难度 | 代码量 | 适用场景 |
|---|---|---|---|---|---|
| GoKV | RESP(Redis) | 内存 | ⭐⭐⭐⭐⭐ | 极少 | 学习、原型、缓存 |
| AmrSaber/kv | HTTP/CLI | 内存 | ⭐⭐⭐⭐⭐ | 极少 | 工具、简单服务 |
| mini-kvstore-go | HTTP | 磁盘 | ⭐⭐⭐⭐ | 中等 | 小型生产 |
| redix | TCP/HTTP | 磁盘 | ⭐⭐⭐⭐ | 极少 | 轻量持久化 |
| olric | RESP | 内存/磁盘 | ⭐⭐⭐ | 中等 | 分布式/单机缓存 |
| nutsdb | 嵌入式 | 磁盘 | ⭐⭐⭐ | 中等 | 自定义服务 |
五、快速启动建议
- 纯内存、兼容 Redis:选 GoKV,
redis-cli直接用 - 要 HTTP 接口、极简:选 AmrSaber/kv,
go install即用 - 要持久化、生产可用:选 mini-kvstore-go 或 redix
需要我给你一份 GoKV 快速启动+常用命令 的完整示例脚本吗?