Redis列表的批量值插入

5 投票
4 回答
8634 浏览
提问于 2025-04-16 20:26

有没有办法一次性把多个值存储到Redis的列表里?我只找到了一种方法可以一次插入一个值到列表中。

我一直在查看以下命令的文档:http://redis.io/commands

更新:我为这个功能创建了一个问题单

4 个回答

1

如果你使用的是2.4版本,那是可以的。虽然这个版本还没有被标记为稳定版,但我记得很快就会的。话说回来,我现在用的是开发中的版本,感觉非常稳定,处理了很多数据,而且数据更新的频率也很高。想了解更多关于可变参数命令的信息,可以查看2.4和其他新闻

15

你可以使用一个叫做管道的东西。如果你在用redis-py这个库,可以看看下面的内容。我在AWS的Redis Elasticache上运行了这个,得到了以下结果:

import redis
rs = redis.StrictRedis(host='host', port=6379, db=0)
q='test_queue'

处理10,000个值用了0.17秒

def multi_push(q,vals):
    pipe = rs.pipeline()
    for val in vals:
        pipe.lpush(q,val)
    pipe.execute()

处理10,000个值用了13.20秒

def seq_push(q,vals):
    for val in vals:
        rs.lpush(q,val)

大约快了78倍。

2

是的,看起来这可能不太行。你可以试着用MULTI(事务)来一次性存储多个值,这样可以确保这些操作是一起完成的。

撰写回答