文章目录
  1. 04_Redis之Pipeline
  2. 1. 简介
  3. 2. 使用
  4. 3. 注意

[TOC]

04_Redis之Pipeline

1. 简介

Redis执行的命令的过程如下:

  • 发送命令
  • 命令排队
  • 命令执行
  • 返回结果

其中1和4成为Round Trip Time(RTT 往返时间)

Redis提供了mget,mset等来有效解决RTT时间。但大部分命令是不支持批量操作的。

Pipeline(流水线)能改善上面的问题。它将一组命令进行组装,通过一次RTT传输给Redis,在将这组Redis命令的执行结果按顺序返回。

2. 使用

可以使用redis-cli --pipe来执行。

大多数还是使用高级语言客户端中的Pipeline,如java中的Jedis

3. 注意

Pipeline原生批量命令(如mget)的区别:

  • 原生批量命令是原子的,Pipeline不是原子的
  • 原生批量命令是一个命令多个key,Pipeline不是
  • 原生批量命令是Redis服务端支持的,Pipeline需要服务端和客户端共同实现

Pipeline虽然好用,但是每次组装的命令个数不能没有节制,否则会是数据量过大,以及增加客户端等待时间,同时有可能会造成网络阻塞。建议拆成多个小的pipeline执行。

文章目录
  1. 04_Redis之Pipeline
  2. 1. 简介
  3. 2. 使用
  4. 3. 注意