WeTask vs Redis:实测性能差距到底有多大?
很多人在选型的时候容易陷入“功能覆盖”的误区,但到了公司实际落地,性能指标才是决定能不能上生产环境的关键。最近我们团队在尝试用 WeTask v0.1.0-rc.1 替代部分 Redis 场景,为了看清楚底层的吞吐量差距,我在 MacBook M3 (16G RAM) 的 Docker 环境下跑了一组对比 Benchmark。
如果你在做性能预估,千万不能直接搬用 Redis 的队列写入速度,因为两者的底层逻辑完全不同。WeTask 承载的是任务流,而 Redis 承载的是数据流。
下一篇
MCP Agent团队实战:别再死磕单个Agent的Prompt了 →
先说结论:在纯粹的缓存操作和 Pipeline 吞吐上,Redis 依然是绝对的霸主,速度快了 2 到 3 倍。但 WeTask 的有趣之处在于,随着 Pipeline 规模增加,它的吞吐量提升非常明显。
实测环境配置
为了保证测试数据的纯净度,我把环境统一成了这样:
- 硬件: MacBook Air M3 (8核), macOS 15.7.3
- 容器: Docker Desktop 4.66.1 (分配 4 CPU, 8.5GB RAM)
- 版本: WeTask v0.1.0-rc.1 (独立部署,禁用共识机制) vs Redis 7.4.9 (关闭持久化
save ""和appendonly no) - 客户端: Go 1.26.5 (
go-redis/v9) / Python 3.14.4 / Node 25.4.0
核心性能表现
这次对比主要分成了“单次网络缓存”和“混合 Pipeline”两个维度。
1. 网络缓存实测(SET/GET)
在 64B 和 1024B 的 Payload 下,Redis 的响应速度极快,p95 延迟基本在 0.3ms - 5ms 之间。而 WeTask 的 p95 延迟则明显偏高。
- 64B / 16并发 / SET: WeTask 跑出 6,956 ops/s (p95: 4.18ms),而 Redis 是 20,176 ops/s (p95: 1.54ms)。
- 1024B / 64并发 / GET: WeTask 为 6,999 ops/s (p95: 20.21ms),Redis 为 23,397 ops/s (p95: 4.98ms)。
2. 混合 Pipeline 吞吐量
这里测试的是 SET / GET / DELETE 的混合操作。一个很关键的观察是:WeTask 在大批量 Pipeline 时的表现有显著提升。
- Pipeline 10次 / 16并发: WeTask 74,135 ops/s vs Redis 160,198 ops/s。
- Pipeline 1,000次 / 16并发: WeTask 冲到了 402,175 ops/s,虽然 Redis 依然高达 886,477 ops/s,但 WeTask 的吞吐量随规模增长的斜率更高。
避坑指南:不要把 SubmitTask 等同于 LPUSH
在公司内部推行时,很多同事习惯性地把 WeTask 的 SubmitTask 和 Redis 的 LPUSH 做对标,这其实是个巨大的坑。
- Redis
LPUSH: 仅仅是将字节追加到非持久化列表中,操作极轻量。 - WeTask
SubmitTask: 它会进入完整的任务生命周期,包含 fallback handler 的执行。
如果你在做性能预估,千万不能直接搬用 Redis 的队列写入速度,因为两者的底层逻辑完全不同。WeTask 承载的是任务流,而 Redis 承载的是数据流。
部署实操建议
如果你想在本地复现这个对比,可以通过以下 Docker 命令快速拉起 WeTask:
# 拉取并运行 WeTask 独立实例
docker run -d --name wetask-test -p 8080:8080 wetask-io/wetask:v0.1.0-rc.1对于需要高并发、极低延迟的纯缓存场景,Redis 依然是首选;但如果你的工作流涉及复杂的任务生命周期管理,且能接受 2-3 倍的性能损耗以换取更强的任务编排能力,WeTask 是个值得实操的方案。
全部回复 (2)
强
强迫症脚本小子
专家
13小时前
其实WeTask在处理复杂数据结构时内存占用比Redis低不少,这块可以测测。
0
阿