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

How to print data from list stored in redis?

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

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

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

在for循环中写什么?

您的方法有效但无效 - 您将执行大量不必要的请求,从而浪费 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

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

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

更快的方法是:

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