1
我有一套約60個有序集合,每個集合包含約200個成員,我正在嘗試處理。之前,我構建了一個Redis(Lua)服務器端腳本,但請求的大(O)時間值在負載下緩慢下降。緩存變量在Sinatra
我現在正在嘗試將處理任務卸載到Ruby/Sinatra,並在每次請求都提示效率低下時刷新結果。鑑於下面的代碼,有沒有辦法在Sinatra中緩存「分數」結果,所以我不必在每次請求時從Redis中獲取結果?
global = redis.smembers("id_list")
i=0
scores = redis.pipelined do
global.each do |key|
redis.zrange("user:#{global[i]}",0,100,:with_scores => true)
i+=1
end
end
這似乎沒有緩存結果。我已經將上面的代碼放入我的代碼中,並且我的日誌記錄顯示每次有請求進入時,我仍然會打電話給Redis。 – tjrburgess
您是在霰彈槍下運行Sinatra還是在每次請求之前重新加載您的應用程序?我只是用上面的代碼做了一個測試,用put代替redis調用,並且它只在第一次請求/ get時調用get_scores函數 – mattwise