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

Shr*_*kar 1 python redis

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

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

for i in range(0,r_server.llen('lst')):
    print ??????
Run Code Online (Sandbox Code Playgroud)

我在for循环中写什么?

Ita*_*ber 8

你的方法是有效但无效的 - 你会做很多不必要的请求,从而浪费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
Run Code Online (Sandbox Code Playgroud)

但请注意,使用大型列表执行此操作也存在问题,因为在准备对LRANGE请求的回复时(+消耗回复缓冲区的内存),您将阻止Redis .在这种情况下,您应该考虑使用带有RPOPLPUSHon lst或其副本的循环列表模式,有或没有并发性考虑因素.