gpt4 book ai didi

ruby-on-rails - 如何通过 id 缓存查找对象

转载 作者:行者123 更新时间:2023-12-04 05:34:03 27 4
gpt4 key购买 nike

select * from Foo where id = 200

如何通过 id 缓存查找对象,因为我们观察到一直在某个 id 上进行 select 调用。我们应该如何以一种非侵入式的方式在 rails 中启用它,以便我们将来可以在任何缓存存储之间切换(比如 memcached 或 redis)

编辑:

非常类似于基于 Hibernate 的缓存策略 org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE它应用于 Java EE 中的所有实体类。

最佳答案

在你的 Foo 模型中,你可能想要这样的东西

class Foo < ActiveRecord::Base

def self.find_some_foo(foo_id)
Rails.cache.fetch("foo_#{foo_id}", expires_in: 7.days) do
begin
self.where(:id => foo_id)
rescue Exception => e
logger.info "Exception fetching Foo ID: #{e.to_s}"
nil
end
end
end

end

通过调用 config.cache_store= 设置应用程序的默认缓存存储在您的 config/application.rb 内文件,例如 config.cache_store = :memory_store link Alex Ghiculescu 提供的链接在第 2.1 节中有很好的信息。

当您尝试获取不存在于 cache_store 中的键时,rails 缓存存储会自动填充。 .出于这个原因,为您的 key 提出一个好的命名约定很重要。一旦您建立了基础知识,就可以通过在 config/application.rb 中进行适当的更改来轻松地在不同的缓存存储之间切换。 .一些选择是 memory store , file store , memcache ,或缓存存储的任意组合。

要刷新 rails 内存缓存,请重新启动 Rails 服务器。要刷新文件缓存,请键入 rake tmp:clear .要刷新内存缓存,请参阅此 link .

关于ruby-on-rails - 如何通过 id 缓存查找对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15359850/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com