如何从redis中存储的列表中打印数据?

时间:2015-01-15 09:39:46

标签: python redis

我的数据已存储在redis列表'lst'中。

我必须打印列表的所有元素

for i in range(0,r_server.llen('lst')):
    print ??????

我在for循环中写什么?

3 个答案:

答案 0 :(得分:7)

您的方法有效但无效 - 您将做很多不必要的请求,从而浪费CPU,带宽和时间。如果你的lst有N个元素,你的循环将需要N + 1个调用redis,其中N个调用将是LINDEX,其复杂度为O(N)。

Redis使用LRANGE命令提供了一种更好的方法,因此您基本上可以通过一次调用替换所有对Redis的调用,喜欢:

l = redis_server.lrange('lst', 0, -1)
for x in l:
  print x

但请注意,使用大型列表执行此操作也存在问题,因为您在准备回复LRANGE请求时会阻止Redis(+消耗内存以获取回复缓冲区) )。在这种情况下,您应该考虑在lst上使用带有RPOPLPUSH的循环列表模式或其副本,无论是否考虑并发性。

答案 1 :(得分:0)

更快的方法是:

for item in redis_server.lrange('lst', 0, -1):
    print(item)

答案 2 :(得分:-2)

for e in r.lrange( 'LanguageList', 0, -1 ):
    print(e)