【问题标题】:Caching database data缓存数据库数据
【发布时间】:2012-11-05 20:05:35
【问题描述】:

我正在尝试缓存数据库中的一些数据,以减少对数据库的 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 而不是实际访问数据库。

我的问题是,这样做有什么缺点吗?有没有更好的方法来做同样的事情?

【问题讨论】:

  • 嘿,请看下面我的回答。如果有帮助,请通过投票告诉我们!

标签: sql caching ruby-on-rails-2


【解决方案1】:

我推荐两种方式:

1) 更好的方法是使用条件和范围来过滤您要查找的实际数据,而不是拉取和手动迭代记录。这假设您可以将“record.is_needed”翻译成条件或 SQL 以获得所需的结果

2) 使用 Rails 的 Cache 从 DB 中存储存储结果:http://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-store

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

数据库喜欢被查询......他们下车了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多