新手问题 ActiveRecord 该如何缓存 SQL 查询出来的数据

noob · 2015年09月24日 · 最后由 rei 回复于 2015年09月24日 · 2120 次阅读

各路神仙请显灵,该如何实现:可以缓存@ placements 里的数据,同时 placements 表中数据是会变化的,可否设置缓存时间,缓存失效后,重新查询 placements 表。

require 'active_record'

ActiveRecord::Base.establish_connection(:adapter => "mysql2", :host => "10.1.1.130", :username => "xmo_prd", :database => "xmo", :encoding => "utf8", :password => "MWc200bs",)

class Plecement < ActiveRecord::Base
  @placements =ActiveRecord::Base.connection.execute("select id, placement_name from placements").collect { |e| [e[0], e[1]] }

  def self.tv_source(uid,placement_id)
    return "" if (placement_id.nil? && uid.nil?)
    uid.empty? ? @placements.detect { |e| placement_id == e[0]}[1].split("_")[0] : uid.split("_")[0]
  end
end

#1 楼 @rei 使用底层缓存的话,是不是我需要引入什么,报错

#2 楼 @noob 我猜 require 'rails/al'l 并没有完整的载入 rails 环境。这个脚本是想怎么用?

#3 楼 @rei 在另个.rb 中直接 require

#4 楼 @noob 如果不是 Rails 环境,可以直接操作 Memcached

https://github.com/mperham/dalli

require 'dalli'

dc = Dalli::Client.new

dc.fetch 'cache_key', expires_in: 300 do
  # code
end
需要 登录 后方可回复, 如果你还没有账号请 注册新账号