Redis 管道技术

Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:

  • 客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。
  • 服务端处理命令,并将结果返回给客户端。

优点:

  • 一次性发送所有请求命令
  • 一次性获取所有请求结果

为什么管道技术这么快?

假设在建房子,工人要把砖头拿到楼顶,按正常人算,工人只有两只手,一次只能拿两个, 拿了10趟才拿完,另外一个工人有一个篮子,一次能装5个,因此他只要走四趟就可以了!

管道技术其实就是类似一次打包传送,然后一次性获取所有结果,也就是说它只要走一次就可以了, 当然速度就快了!

redis 管道示例

$(echo -en "PING\r\n SET panguglekey redis\r\nGET panguglekey\r\nINCR visitor\r\nINCR visitor\r\nINCR visitor\r\n"; sleep 10) | nc 127.0.0.1 6379

+PONG
+OK
redis
:1
:2
:3
  • PING 表示 验证 Redis 是否可用
  • SET panguglekey redis 表示 往Redis 设置一个缓存
  • GET panguglekey 表示从Redis 读取缓存
  • INCR visitor 表示自增,上面共有三处,说明是执行了3次

注意

\r\n

表示换行符,不是 Redis 命令

从结果我可以看出,结果是一次性获取的,说明命令是一次性提交的!

管道技术的优势

管道技术最显著的优势是提高了 redis 服务的性能。