我有一个运行在Google Kubernetes Engine中的Rails 6应用程序,并且我试图使用Memcached启用分布式缓存。
我完全按照these instructions的步骤将Memcached与mcrouter一起部署到Kubernetes集群中。一切都没错,使用Python脚本进行的最终测试工作正常。
然后,在我的Rails应用程序中,我认为我只需要添加“ dalli” gem并使用MemCacheStore
,如下所示:
cache = ActiveSupport::Cache::MemCacheStore.new("#{ENV['NODE_NAME']}:5000")
cache.write('key', 'value')
此代码应该连接到端口5000上本地节点上的微型计算机,并写入高速缓存(NODE_NAME
环境变量保存本地节点的名称。
cache.write
命令返回false
并将其打印到日志中:
D, [2020-01-08T18:02:30.233119 #215] DEBUG -- : Dalli::Server#connect gke-rev79-cluster-phat-pool-41a53de4-rfz3:5000
W, [2020-01-08T18:02:30.258514 #215] WARN -- : gke-rev79-cluster-phat-pool-41a53de4-rfz3:5000 failed (count: 0) EOFError: end of file reached
“ gke-rev79-cluster-phat-pool-41a53de4-rfz3”是本地节点名称
这是我从cache.inspect
中得到的内容:
"#<ActiveSupport::Cache::MemCacheStore:0x0000000004087cb8 @options={}, @data=#<Dalli::Client:0x0000000004087498 @servers=[\"gke-rev79-cluster-phat-pool-41a53de4-rfz3:5000\"], @options={}, @ring=nil>>"
如何连接到缓存?也许我需要在Rails缓存存储区的选项中添加一些内容?
[Dalli似乎不支持Mcrouter,因为它使用了Mcrouter不支持的Memcached二进制协议。