2015-01-15 55 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的循環列表模式或其副本,無論有沒有併發性考慮。

相關問題