如何使用环境配置 Rails 缓存到命名空间缓存键?

How to configure Rails caching to namespace cache keys with the environment?

提问人:jibai31 提问时间:10/12/2023 更新时间:10/15/2023 访问量:79

问:

我正在一个 Rails 6.1 应用程序上部署一个 Rails 6.1 应用程序,该服务器同时托管我的暂存和生产环境,并且有一个唯一的 memcached 实例。

如果我不对所有缓存键进行命名,我相信在生产和暂存中会生成相同的键。对暂存环境的测试将影响生产。

我知道我可以为每个调用传递一个命名空间:

Rails.cache.write("some-key", "some-value", namespace: Rails.env)

但它很容易出错。

我正在寻找一个全局配置,说所有键都应该与环境一起命名

Ruby-on-rails 内存缓存

评论

0赞 max 10/14/2023
为什么您的暂存和生产共享一个 memcached 实例?
0赞 jibai31 10/16/2023
我只有一个专用服务器,我在其中部署了我的生产实例和暂存实例。
0赞 max 10/16/2023
您仍然可以在不同的端口上运行多个 memcached 实例。
0赞 jibai31 10/17/2023
确实如此。我选择了带有命名空间的“dev”解决方案,因此我不会花时间在服务器上配置工具。

答:

0赞 Nikhil bhatt 10/13/2023 #1

您可以使用字符串插值轻松做到这一点。

Rails.cache.write("#{Rails.env}-some-key", "some-value")

最好始终为暂存和生产环境使用单独的缓存实例。

3赞 zaphodbln_ 10/15/2023 #2

将全局配置放入 config/environments/{yourenvironment}.rb 中,如下所示:

config.cache_store = :mem_cache_store, {namespace: 'yourenvironment-...' }

评论

0赞 jibai31 10/16/2023
我最终做到了: config.cache_store = :mem_cache_store, { namespace: “#{Rails.env}/” }