我的数据已存储在redis列表'lst'中。
我必须打印列表的所有元素
for i in range(0,r_server.llen('lst')):
print ??????
我在for循环中写什么?
答案 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)