python redis 列表插入 速度太慢
本文介绍了python redis 列表插入 速度太慢的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
pool = redis.ConnectionPool(host=host, port=port)
client = redis.StrictRedis(connection_pool=pool)
for i in range(10000):
for j in range(30):
client.lpush(IDLE_TASKS, json.dumps(args))
这种执行效率低的可怕。
需要等几十秒,才能插入完成。
请问有没更高效率的处理手法?
args 只是以一个元组内容随意(1,2,"3")之类
解决方案
用 Redis 的 Pipeline , 先在循环内生成数据,最后一次性插入
>>> p = r.pipeline() --创建一个管道
>>> p.set('hello','redis')
>>> p.sadd('faz','baz')
>>> p.incr('num')
>>> p.execute() -- 执行管道内命令
[True, 1, 1]
>>> r.get('hello')
'redis'
pool = redis.ConnectionPool(host=host, port=port)
client = redis.StrictRedis(connection_pool=pool)
p = client.pipeline()
for i in range(10000):
for j in range(30):
p.lpush(IDLE_TASKS, json.dumps(args))
p.execute()
使用管道,Redis 会将命令暂时存储,当遇到 execute()
时才会执行,所以上面代码只需要和 Redis 服务器通信一次即可将数据全部插入
参考链接: https://redis.io/topics/pipel...
这篇关于python redis 列表插入 速度太慢的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文