也許這是一個代碼審查的問題,但我認爲這是最適合在這裏。讓我知道它是否需要移動。如何從Redis獲取所有數據或加速呼叫?
我將Redis用作Sinatra應用程序中某些數據的長期緩存。我遍歷Redis中的所有關鍵字,提取他們的數據,並用JSON解析它。這需要相當長的時間。這裏的基準:
[13] pry(main)> Benchmark.measure do
[13] pry(main)* dkeys = redis.keys.delete_if {|e| e == "last_run"}
[13] pry(main)* @delayed = dkeys.map {|k| {k => JSON.parse(redis.get(k))}}
[13] pry(main)* end
=> 0.520000 0.160000 0.680000 (132.410716)
[14] pry(main)> @delayed.count
=> 1358
[15] pry(main)>
延遲顯然是在地圖上,我認爲延遲是調用redis 1300+次的成本。
有沒有一種方法可以將來自redis的所有數據放入對象中,因此我不必在迭代的每一步中調用它?
你能不只是緩存你是從哪個緩存? –
由於應用程序的範圍,似乎有點過分,但我可能只需要走這條路。 – cmhobbs
你應該看看這個如果你還沒有:http://stackoverflow.com/questions/10155398/getting-multiple-key-values-from-redis –