有没有一种方法可以同时将多个值存储在Redis列表中?我只能找到一次在列表中插入1个值的方法。
我一直在查看以下命令文档:http://redis.io/commands 更新:我已经为此功能创建了一个票据。
我一直在查看以下命令文档:http://redis.io/commands 更新:我已经为此功能创建了一个票据。
如果你在使用redis-py,你可以使用一个pipeline。你可以查看下面的内容,我在一个redis elasticache的aws实例上运行了这个pipeline,并发现以下结果:
import redis
rs = redis.StrictRedis(host='host', port=6379, db=0)
q='test_queue'
在0.17秒内完成了10,000个值的运算
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倍。
是的,看起来这似乎不可能。您可以使用 MULTI(事务)将多个值存储在原子序列中。
关于列表,我不知道有没有这样的功能,但是根据你的数据量,将数据重新转换为使用Redis的多集合命令HMSET可能会更有效率,因为它确实可以在单个调用中进行多个插入操作:
HMSET V3620 UnixTime 1309312200 UID 64002 username "doug" level "noob"
HMSET key field 1 value 1 field 2 value 2
如果你运行的是2.4版本,那么是可以的。虽然它还没有被标记为稳定版,但据我所知,很快就会了。话虽如此,我正在使用主干版本,它对我来说非常稳定,处理了许多数据和高频率的变更。有关可变命令的更多详细信息,请参见2.4 and other news。