WeTask vs Redis:实测性能差距到底有多大?

Casey51 初级 10小时前 更新于 2026年7月25日 653 浏览 11 点赞 约 2 分钟

很多人在选型的时候容易陷入“功能覆盖”的误区,但到了公司实际落地,性能指标才是决定能不能上生产环境的关键。最近我们团队在尝试用 WeTask v0.1.0-rc.1 替代部分 Redis 场景,为了看清楚底层的吞吐量差距,我在 MacBook M3 (16G RAM) 的 Docker 环境下跑了一组对比 Benchmark。

先说结论:在纯粹的缓存操作和 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)。
在这种 unary 操作中,Redis 的性能大约是 WeTask 的 2-3 倍。

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 是个值得实操的方案。

工作流AI落地productivityprogrammingpython

全部回复 (2)

强迫症脚本小子 专家 13小时前
其实WeTask在处理复杂数据结构时内存占用比Redis低不少,这块可以测测。
0 回复
阿杰在路上 中级 13小时前
之前瞎试过 WeTask,结果配置没搞对,响应时间直接翻倍,真的被坑惨了。
0 回复

发表回复

支持 Markdown 格式