2012-11-05 273 views
0

我想從數據庫緩存一些數據,以減少SQL查詢到數據庫的數量。目前,我在做什麼,是我會從數據庫中加載的一組記錄:緩存數據庫數據

@records = Record.find(:all, :conditions => ["id < ?", 100]) 

,然後通過這個數組進行迭代,以發現我真正想要的記錄:

@needed_records = Array.new 
@records.each do |record| 
    if record.is_needed 
    @needed_records.push(record) 
    end 
end 

使只要我需要,我可以通過@records而不是實際訪問數據庫。

我的問題是,這樣做有什麼缺點嗎?有沒有更好的方法來做同樣的事情?

+0

嘿,看到我的答案在下面。如果有幫助,請投票通知我們! – omarvelous

回答

0

兩種方式,我建議:

1)更好的辦法是使用條件和範圍來過濾你正在尋找的,而不是拉動和手動遍歷記錄,實際的數據。這是假設你能翻譯「record.is_needed」爲條件或SQL,從而獲得所需結果

2)使用Rails的緩存存儲中存儲從DB結果:http://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-store

Rails.cache.write(:records, @records) 

數據庫愛要查詢......他們就這樣下去!