python redis 列表插入 速度太慢

查看:279
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆