Ala*_*ain 4 ruby memcached ruby-on-rails
嗨Stackoverflowers,我在这个问题上花了太多时间来保持理智,所以是时候寻求帮助了...
我有一个使用此方法的类:
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
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这是一个昂贵的调用,每个请求都会调用ALOT,因此我想缓存它.问题是memcached似乎不起作用,在日志文件中,我得到:
缓存读取:telecom_info_for_60000000
缓存未命中:telecom_info_for_60000000({})
奇怪的是,我知道memcached正在工作,因为它确实缓存了我在另一个模型中的其他一些函数的结果.
有什么建议?我在REE 1.8.7上运行Rails 2.3.5
替换return info
为info
.
Rails.cache.fetch("telecom_info_for_#{ref_num}", :expires_in=> 3.hours) do
# ...
info
end
Run Code Online (Sandbox Code Playgroud)
该return
关键字总是从目前的返回方式,这意味着info
永远不会返回到您的来电Rails.cache.fetch
,也不是以往任何时候都执行该方法的其余部分.当最后一个语句只是info
,这是将给出的值Rails.cache.fetch
,并且您将允许该方法通过将该值存储在缓存中来完成其任务.
比较以下内容:
def my_method
1.upto(3) do |i|
# Calling return immediately causes Ruby to exit the current method.
return i
end
end
my_method
#=> 1
Run Code Online (Sandbox Code Playgroud)
根据经验:总是省略,return
除非你真的想退出当前块并从当前方法返回.
归档时间: |
|
查看次数: |
571 次 |
最近记录: |