redis-pipeline

Redis Pipelining
能够实现请求/响应服务器,以便即便客户端还没有读取旧响应,它也可以处理新请求。这样就能够将多个命令发送到服务器而无需等待回复,最后只需一步便可读取回复。python

这被称为流水线技术,而且是几十年来普遍使用的技术。例如,许多POP3协议实现已经支持此功能,大大加快了从服务器下载新电子邮件的过程。redis

Redis从很早就开始支持流水线操做,所以不管您运行什么版本,均可以使用Redis进行流水线操做
单条指令:
在这里插入图片描述bash

多条指令服务器

在这里插入图片描述

流水线技术不单单是为了减小因为往返时间而致使的延迟成本的一种方式,它实际上大大提升了您在给定Redis服务器中每秒可执行的总操做量code

在这里插入图片描述
在这里插入图片描述
原始:blog

def raw():
    start = time.time()
    for x in range(100):
        redis.lpush("user:xx:message", 'message:%s'%x)
        redis.rpush('user:yy:message','haha%s'%x)
    end = time.time()
    print('耗时%0.2fs' % (end - start))  #耗时8.35s

使用pipeline:图片

def PipeLine():
    with redis.pipeline() as p:
        start = time.time()
        for x in range(100):
            p.lpush("user:xx:message", 'message:%s' % x).rpush('user:yy:message','haha%s'%x)
        end = time.time()
        print('耗时%0.2fs' % (end - start))  #耗时 0.25s

建议:ip

1. 注意每次pipeline携带的数据量
2. pipeline每次只能做用在一个Redis节点上
相关文章
相关标签/搜索