我的数据已经存储在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(+ 为回复的缓冲区消耗内存)。在这种情况下,您应该考虑将循环列表模式与 RPOPLPUSH
结合使用。在 lst
或其副本上,考虑或不考虑并发性。
关于python - 如何从存储在redis中的列表中打印数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27960507/