🚀 goflashdb - Go 语言实现的高性能、Redis 兼容的生产级键值存储系统
| 📚 在线文档 | 🎯 快速开始 | 🏗️ 架构设计 |
# 克隆项目
git clone https://github.com/strings77wzq/goflashdb.git
cd goflashdb
# 编译
go build -o goflashdb ./cmd/goflashdb
# 启动
./goflashdb
redis-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: 10000
goflashdb/
├── 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 更注重教学价值和工程实践:
欢迎贡献代码!请查看 CONTRIBUTING.md