Redis提供了管道可以一次下发多条命令,并一次性返回多个结果,大大提高了运行效率。
使用管道:
import redis
import time
r = redis.Redis(password='xiemanrui')
s = time.time()
p = r.pipeline()
for i in range(10000):
p.set('foo', 'bar%s' % i)
p.execute()
print(time.time() - s)
运行时间为:1.2358031272888184秒
不使用管道:
import redis
import time
r = redis.Redis(password='xiemanrui')
s = time.time()
for i in range(10000):
r.set('foo', 'bar%s' % i)
print(time.time() - s)
运行时间为: 2.5380067825317383秒
由此可见,使用管道执行多条命令大大提高了效率。
管道也支持链式调用:
import redis
import time
r = redis.Redis(password='xiemanrui')
s = time.time()
p = r.pipeline()
result = p.set('foo', 'bar').ping().get('foo').execute()
print(result)
运行结果为:
[True, True, b'bar']