Redis流水线

版权声明:guojawee https://blog.csdn.net/weixin_36750623/article/details/84197497

在这里插入图片描述

  1. 一般情况下,用户没执行一个Redis命令,客户端与服务器都需要进行一次通信:客户端将命令发送给服务器,而服务器则会将执行命令所得的结果返回给客户端。
  2. 当程序执行一些复杂的操作时,客户端可能需要执行多个命令,并与服务器进行多次通信。
  3. 在多数情况下,客户端再执行Redis命令时,大部分等待时间都耗费在了发送命令请求和接收命令回复上面。
  4. Redis流水线功能允许客户端一次将多个命令请求发送给服务器,并将被执行的多个命令请求的结果在一个命令回复中全部返回给客户端,使用这个功能可以有效的减少客户端在执行多个命令时需要与服务器进行通信的次数。
  5. python示例代码
    各个 Redis 客户端使用流水线功能的方法都不一样, 以下代码展示了在使用 Python 客户端的情况下, 开启流水线功能来更新《Redis in Action》各个标签的点击计数器的方法:
from redis import Redis
# 创建 Redis 客户端
client = Redis()
# 创建一个流水线对象,包裹四个 INCR 命令
# transaction=False 表示关闭事务功能,只使用流水线功能
# 关于事务方面的详细信息我们稍后就会介绍
pipeline = client.pipeline(transaction=False)
pipeline.incr('tag::计算机::click_counter')
pipeline.incr('tag::编程::click_counter')
pipeline.incr('tag::数据库::click_counter')
pipeline.incr('tag::Redis::click_counter')
# 以流水线形式发送被包裹的四个命令
pipeline.execute()

以流水线方式执行的多个命令的结果会在一个命令回复中被返回, 以下是上面的计数器更新代码的执行结果:

# 多个命令的结果会以列表的形式返回
# 列表的第一个项 10087 是 tag::计算机::click_counter 的值
# 第二个项 5001 是 tag::编程::click_counter 的值
# 第三个项 3421 是 tag::数据库::click_counter 的值
# 第四个项 1001 是 tag::Redis::click_counter 的值
[10087, 5001, 3421, 1001]

猜你喜欢

转载自blog.csdn.net/weixin_36750623/article/details/84197497