以下是 Memcached、DragonflyDB、KeyDB、Skytable 和 Valkey 的性能对比分析(基于典型场景和公开测试数据):
数据库 | 类型 | 线程模型 | 吞吐量 (QPS) | 延迟 (μs) | 内存效率 | 适用场景 | 兼容性 |
---|---|---|---|---|---|---|---|
Memcached | 纯内存键值存储 | 多线程 | 100K - 500K | 10 - 100 | 高 | 缓存、会话存储 | 无原生密码认证 |
DragonflyDB | 多协议内存数据库 | 多线程 | 1M+ | 50 - 200 | 中高 | 高吞吐缓存、Redis 替代 | 兼容 Redis |
KeyDB | Redis 多线程分支 | 多线程 | 500K - 1M | 50 - 150 | 中 | 需要 Redis 兼容的多线程场景 | 完全兼容 Redis |
Skytable | NoSQL 数据库 | 单线程/多线程 | 100K - 300K | 100 - 500 | 高 | 结构化数据存储 | 不兼容 Redis |
Valkey | Redis 分支 | 单线程 | 300K - 800K | 50 - 200 | 中高 | Redis 替代、低延迟场景 | 完全兼容 Redis |
详细说明
- Memcached
优势:
纯内存设计,读写速度极快(微秒级延迟)。
多线程模型适合高并发简单键值操作(如缓存)。
劣势:
无持久化功能,不支持复杂数据结构。
需通过 SASL 实现认证(性能略有损耗)。
- DragonflyDB
优势:
兼容 Redis 协议,但性能显著高于原生 Redis(宣称 1M+ QPS)。
支持多线程和垂直扩展,适合大规模缓存。
劣势:
内存占用较高(因支持更多功能)。
- KeyDB
优势:
多线程 Redis 分支,吞吐量比单线程 Redis 提升 2-5 倍。
完全兼容 Redis,无缝迁移。
劣势:
多线程可能增加复杂场景的锁竞争。
- Skytable
优势:
专为结构化数据优化(类似 MongoDB)。
高内存效率,适合存储密集型场景。
劣势:
不兼容 Redis 协议,生态工具较少。
- Valkey
优势:
Redis 的直接替代品,保持单线程简单性。
社区驱动,修复了 Redis 部分性能瓶颈。
劣势:
单线程模型限制多核利用率。
选型建议
缓存首选:DragonflyDB(高性能)或 KeyDB(多线程兼容 Redis)。
简单键值:Memcached(极致低延迟)。
结构化数据:Skytable(NoSQL 场景)。
Redis 替代:Valkey(兼容性优先)或 DragonflyDB(性能优先)。
注:实际性能受硬件、数据规模和配置影响,建议针对业务场景进行基准测试。
- Memcached
Memcached 本身不支持密码认证,但可以通过 SASL 进行认证。以下是使用 SASL 的部署方式:
# 创建配置文件
echo "mech_list: plain" > /data/memcached_sasl.conf
echo "user memcached:87vhqEneQ5u8" >> /data/memcached_sasl.conf
# 启动容器
docker run -d \
--name memcached \
-p 11211:11211 \
-v /data/memcached_sasl.conf:/etc/sasl/memcached.conf \
-e MEMCACHED_ENABLE_SASL=yes \
registry.cn-hangzhou.aliyuncs.com/qiluo-images/memcached \
memcached -S -vv
arm镜像:registry.cn-hangzhou.aliyuncs.com/qiluo-images/linux_arm64_memcached
验证连接:
telnet localhost 11211
set foo 0 0 3
bar
会提示需要认证
- DragonflyDB
DragonflyDB 是一个高性能的内存数据库,兼容 Redis 协议。
docker run -d \
--name dragonfly \
-p 6379:6379 \
docker.dragonflydb.io/dragonflydb/dragonfly \
--requirepass="87vhqEneQ5u8"
arm镜像:docker.dragonflydb.io/dragonflydb/linux_arm64_dragonfly
验证连接:
redis-cli -a 87vhqEneQ5u8
- KeyDB
KeyDB 是 Redis 的多线程分支。
docker run -d \
--name keydb \
-p 6380:6379 \
registry.cn-hangzhou.aliyuncs.com/qiluo-images/keydb \
keydb-server --requirepass 87vhqEneQ5u8
arm镜像:docker.dragonflydb.io/dragonflydb/linux_arm64_keydb
验证连接:
redis-cli -p 6380 -a 87vhqEneQ5u8
- Skytable
Skytable 是一个高性能的 NoSQL 数据库。
docker run -d \
--name skytable \
-p 2003:2003 \
registry.cn-hangzhou.aliyuncs.com/qiluo-images/skytable:latest \
--auth-root-password 87vhqEneQ5u8
arm镜像:docker.dragonflydb.io/dragonflydb/linux_arm64_skytable
验证连接:
使用 Skytable 客户端连接
- Valkey
Valkey 是 Redis 的一个分支(原名 Redis)。
docker run -d \
--name valkey \
-p 6381:6379 \
registry.cn-hangzhou.aliyuncs.com/qiluo-images/valkey \
valkey-server --requirepass 87vhqEneQ5u8
arm镜像:docker.dragonflydb.io/dragonflydb/linux_arm64_valkey
验证连接:
redis-cli -p 6381 -a 87vhqEneQ5u8
快速安装与使用
通过 Docke,可以快速体验 Dragonfly 的强大功能。以下是简单的安装步骤:
- 下载官方 Docker Compose 文件,修改镜像地址为
registry.cn-hangzhou.aliyuncs.com/qiluo-images/dragonfly
wget https://raw.githubusercontent.com/dragonflydb/dragonfly/main/contrib/docker/docker-compose.yml
- 启动 Dragonfly
docker compose up -d
- 确认服务是否启动成功
docker ps | grep dragonfly
- 查看日志
docker logs -f docker_dragonfly_1
启动完成后,Dragonfly 将立即响应 http 和 redis 请求。你可以使用 redis-cli 连接到 localhost:6379 端口,也可以通过浏览器访问 http://localhost:6379。