Redis列表的批量值插入
有没有办法一次性把多个值存储到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(事务)来一次性存储多个值,这样可以确保这些操作是一起完成的。