我的数据已存储在redis列表'lst'中.
我必须打印列表的所有元素
for i in range(0,r_server.llen('lst')):
print ??????
Run Code Online (Sandbox Code Playgroud)
我在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
Run Code Online (Sandbox Code Playgroud)
但请注意,使用大型列表执行此操作也存在问题,因为在准备对LRANGE请求的回复时(+消耗回复缓冲区的内存),您将阻止Redis .在这种情况下,您应该考虑使用带有RPOPLPUSHon lst或其副本的循环列表模式,有或没有并发性考虑因素.
| 归档时间: |
|
| 查看次数: |
937 次 |
| 最近记录: |