Ruby on rails Rails在Heroku上的web和worker之间共享缓存

Ruby on rails Rails在Heroku上的web和worker之间共享缓存,ruby-on-rails,caching,heroku,sidekiq,worker,Ruby On Rails,Caching,Heroku,Sidekiq,Worker,我有一个Rails应用程序,它有web进程和后台工作程序(运行Sidekiq) 我有一个特性,它将值从web进程写入缓存,然后工作进程稍后从缓存读取该值 在web中: Rails.cache.write 'key', 'xxx' 在职工人: Rails.cache.read 'key' 这可以在我的本地环境中找到,但当我将此代码部署到Heroku时,工作者无法从缓存中读取相应的密钥,它总是返回nil 我想知道我是否忽略了生产模式的任何特殊配置?Rails中的默认缓存存储是filestore,

我有一个Rails应用程序,它有web进程和后台工作程序(运行Sidekiq)

我有一个特性,它将值从web进程写入缓存,然后工作进程稍后从缓存读取该值

在web中:

Rails.cache.write 'key', 'xxx'
在职工人:

Rails.cache.read 'key'
这可以在我的本地环境中找到,但当我将此代码部署到Heroku时,工作者无法从缓存中读取相应的密钥,它总是返回nil


我想知道我是否忽略了生产模式的任何特殊配置?

Rails中的默认缓存存储是
filestore
,这意味着缓存存储在磁盘上

这是默认的缓存存储实现

您的worker和web进程不共享同一个文件系统,dyno产生于完全不同的环境中,这些环境不共享资源

如果要共享缓存,则需要将其集中存储在双方都可以访问的位置

这意味着可能是一个数据存储,如或


有很多。

您是否在为您的redis服务使用第三方附加组件?您是否已确认连接到相同/正确的redis实例?附加组件应该提供类似于
REDIS\u URL
的东西,您的web和worker实例都需要连接到这些东西