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

标签 python 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(+ 为回复的缓冲区消耗内存)。在这种情况下,您应该考虑将循环列表模式与 RPOPLPUSH 结合使用。在 lst 或其副本上,考虑或不考虑并发性。

关于python - 如何从存储在redis中的列表中打印数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27960507/

相关文章:

python - 制作一个可以被多个按钮使用的功能

Python:结合使用集合和字典

node.js - Cassandra 行缓存与 Redis 缓存

python - 在 Redis 中获取正确类型的值

python - Django 没有获取对 settings.py 中 INSTALLED_APPS 的更改

python - 如何在没有索引的情况下从分组数据框中获取单元格值

python - 为 Dataframe 的特定列添加前缀

使用 --pipe 批量导入 redis

python - 使用 redis.StrictRedis() 在 redis 中插入一个新数据库

c# - 如何模拟Redis本地连接被拒绝