嗨Stackoverflowers,我已經花了太多的時間在這個問題上讓自己保持清醒,因此是時候尋求幫助......Memcached的永遠懷念(導軌)
我有一個類用這種方法:
def telecom_info
Rails.cache.fetch("telecom_info_for_#{ref_num}", :expires_in=> 3.hours) do
info = Hash.new(0)
Telecom::SERVICES.each do |source|
results = TelecomUsage.find(:all,
:joins=>[:telecom_invoice=>{ :person=> :org_person}],
:conditions=>"dotted_ids like '%#{ref_num}%' and telecom_usages.ruby_type = '#{source}'",
:select=>"avg(charge) #{source.upcase}_AVG_CHARGE,
max(charge) #{source.upcase}_MAX_CHARGE,
min(charge) #{source.upcase}_MIN_CHARGE,
sum(charge) #{source.upcase}_CHARGE,
avg(volume) #{source.upcase}_AVG_VOLUME,
max(volume) #{source.upcase}_MAX_VOLUME,
min(volume) #{source.upcase}_MIN_VOLUME,
sum(volume) #{source.upcase}_VOLUME
")
results = results.first
['charge', 'volume'].each do |source_type|
info["#{source}_#{source_type}".to_sym] = results.send("#{source}_#{source_type}".downcase).to_i
info["#{source}_min_#{source_type}".to_sym] = results.send("#{source}_min_#{source_type}".downcase).to_i
info["#{source}_max_#{source_type}".to_sym] = results.send("#{source}_max_#{source_type}".downcase).to_i
info["#{source}_avg_#{source_type}".to_sym] = results.send("#{source}_avg_#{source_type}".downcase).to_i
end
end
return info
end
end
正如您所看到的,這是一個昂貴的調用,並且它對每個請求都稱爲ALOT,所以我想緩存它。問題是,memcached的似乎不工作,在日誌文件中,我得到:
緩存讀取:telecom_info_for_60000000
緩存未命中:telecom_info_for_60000000({})
奇怪的是,我知道memcached的工作,因爲它不緩存的其他一些功能我已經在另一個模型的結果。
有什麼建議嗎?我對REE 1.8.7
不知道有一種花叫stackover。哈哈哈。 – 2010-09-03 15:16:51