2015-01-15 54 views

回答

5

你的方法是有效的,但效果不佳 - 你会做很多不必要的请求,从而浪费CPU,带宽和时间。如果你的lst有N个元素,你的环路将需要N + 1个呼叫,其中N个呼叫将是复杂度为O(N)的LINDEX

的Redis提供了一个更好的办法来做到这一点与LRANGE命令,这样你就可以基本上替换所有呼叫给它一个调用的Redis,likeso:

l = redis_server.lrange('lst', 0, -1) 
for x in l: 
    print x 

但请注意,与这样大列表也有问题,因为在准备回复LRANGE请求时(+消耗应答缓冲区的内存),您将阻止Redis。在这种情况下,您应该考虑在lst上使用带RPOPLPUSH的循环列表模式或其副本,无论有没有并发性考虑。

相关问题