gpt4 book ai didi

ruby-on-rails - 有没有办法让一个 Rails 3.x 应用程序使用两个不同的缓存存储?

转载 作者:数据小太阳 更新时间:2023-10-29 07:36:44 27 4
gpt4 key购买 nike

在 Rails 3.1 中,我可以在 config/environments/*.yml 中指定缓存机制。现在,将其设置为 :file_store 是缓存 Dragonfly 图像的好方法,但当然其他所有内容也将作为文件缓存( Action 、片段等)。

现在,有没有一种方法可以让一个应用程序使用两个不同的缓存存储区——例如,Dragonfly 所做的一切都存储在 :file_store 中,而其他一切都存储在 Memcache 中?

最佳答案

一句话,是的。

Rack::Cache separates cache entries into一个 MetaStore 和一个 EntityStore

Using a memory based storage implementation (heap or memcached) for the MetaStore is strongly advised, while a disk based storage implementation (file) is often satisfactory for the EntityStore and uses much less memory.

以下是memcached的建议配置通过 dalli gem .

config.cache_store = :dalli_store
config.action_dispatch.rack_cache = {
:metastore => Dalli::Client.new,
:entitystore => URI.encode("file:#{Rails.root}/tmp/cache/rack/body"),
:allow_reload => false
}

另一种内存存储是 Redis ,您可以使用 @jodosha 配置的 redis-store .


根据您的问题标题,人们可能会来到这里寻找一种按照最低延迟顺序链接多个缓存层的方法。

此功能由 @jch 提供的 cascade-store这是另一个custom rails cache store . rails 示例:

config.cache_store = [:cascade_store, :stores => [
[:memory_store, :size => 5.megabytes, :expires_in => 15.minutes],
[:mem_cache_store, 'localhost:11211'],
]]

关于ruby-on-rails - 有没有办法让一个 Rails 3.x 应用程序使用两个不同的缓存存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9963503/

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