首页/数据/数据库速查/Pipeline 批量命令(一次往返)
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条备份与恢复56 条主从复制与高可用53 条性能与调优57 条Redis 命令96 条
Redis 运维与场景124 条

Pipeline 批量命令(一次往返)

把多条命令打包一次发送、一次收全部回复,把 N 次 RTT 压成 1 次;适合批量写入/读取,但它不是事务:不保证原子、出错不回滚。

数据库速查数据更新于 2026-10-12

Python redis-py 示例

Python redis-py 示例
import redis
r = redis.Redis()
pipe = r.pipeline(transaction=False)   # True 则自动包 MULTI/EXEC
for i in range(10000):
    pipe.set(f'k:{i}', i, ex=3600)
results = pipe.execute()                # 一次网络往返全部完成

redis-cli 批量导入

redis-cli 批量导入
printf 'SET k1 v1\nSET k2 v2\n' > cmds.txt
redis-cli --pipe < cmds.txt      # 高速批量导入(返回 errors 数要盯)
收益RTT 从 N 次降为 1 次;吞吐数倍提升
单批大小几百到几千条 / 约 1MB 内一批较稳
错误定位execute() 返回逐条结果,需自己检查异常项
超大 pipeline 会长时间占用服务端单线程并撑大客户端内存;分批发(如每批 500-1000 条)。

易错点

  • 把 pipeline 当原子事务:中间命令失败,前后命令照样执行
  • 一次塞几十万条:客户端内存暴涨,服务端也会被整批处理卡住

数据来源与参考

  • Redis 官方文档: Pipelining
  • redis-py 文档: Pipelines

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌