🚀 goflashdb - Go 语言实现的高性能、Redis 兼容的生产级键值存储系统
- 🎯 100% Redis 协议兼容 - 完全兼容 RESP 协议,可直接使用 redis-cli
- ⚡ 极致性能 - 65536 分片并发字典,充分发挥 Go 并发优势
- 🛡️ 生产级安全 - 认证、限流、危险命令拦截
- 💾 持久化支持 - RDB 快照 + AOF 日志
- 🔌 扩展接口 - OpenClaw/Skills/MCP 接口预留
- 📚 完善文档 - 开发/学习/API 文档齐全
# 克隆项目
git clone https://github.com/strings77wzq/goflashdb.git
cd goflashdb
# 编译
go build -o goflashdb ./cmd/goflashdb
# 启动
./goflashdbredis-cli ping
# PONG
redis-cli set hello world
# OK
redis-cli get hello
# "world"
redis-cli hset user:1 name "Alice" age "30"
# (integer) 2
redis-cli hgetall user:1
# 1) "name"
# 2) "Alice"
# 3) "age"
# 4) "30"
redis-cli lpush mylist a b c
# (integer) 3
redis-cli lrange mylist 0 -1
# 1) "c"
# 2) "b"
# 3) "a"
redis-cli sadd myset x y z
# (integer) 3
redis-cli smembers myset
# 1) "x"
# 2) "y"
# 3) "z"| 操作 | QPS | P99 延迟 |
|---|---|---|
| SET | ~120k | < 1ms |
| GET | ~150k | < 0.5ms |
| HSET | ~100k | < 1ms |
| LPUSH | ~90k | < 1ms |
| SADD | ~95k | < 1ms |
SET, GET, SETNX, SETEX, PSETEX, MSET, MGET, INCR, DECR, INCRBY, DECRBY, APPEND, STRLEN
HSET, HGET, HDEL, HMGET, HGETALL, HEXISTS, HLEN, HKEYS, HVALS
LPUSH, RPUSH, LPOP, RPOP, LRANGE, LLEN, LINDEX, LSET, LTRIM
SADD, SREM, SISMEMBER, SMEMBERS, SCARD, SPOP, SRANDMEMBER
DEL, EXISTS, EXPIRE, TTL
PING, AUTH
SAVE
# 绑定地址
bind_addr: ":6379"
# 持久化配置
append_only: true
append_filename: "appendonly.aof"
rdb_filename: "dump.rdb"
# 安全配置
require_pass: ""
max_clients: 10000goflashdb/
├── cmd/goflashdb/ # 主程序入口
├── pkg/
│ ├── core/ # 核心数据结构和命令
│ ├── resp/ # RESP 协议实现
│ ├── persist/ # 持久化 (AOF/RDB)
│ ├── security/ # 安全模块 (认证/限流/过滤)
│ ├── net/ # 网络服务
│ ├── config/ # 配置管理
│ └── extension/ # AI 扩展接口
├── docs/ # 文档
└── test/ # 测试
访问 https://strings77wzq.github.io/go-flashdb/ 查看完整文档:
相比其他 Redis 实现,go-flashdb 更注重教学价值和工程实践:
- ✅ 清晰的架构设计 - 分层明确,易于理解
- ✅ 详细的中文教程 - 不只是代码,更有设计思路
- ✅ AI 扩展接口 - 预留 OpenClaw/MCP 接口,面向未来
- ✅ 完整的工程实践 - 测试、文档、CI/CD 一应俱全
欢迎贡献代码!请查看 CONTRIBUTING.md
- godis - Go 语言 Redis 实现参考
- mini-redis - Rust 教学项目参考
- 博客园 Finley - 教程写作风格参考