我有一个在Google Kubernetes引擎中运行的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')此代码应连接到本地节点上的mcrouter的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缓存存储的选项中添加一些东西?
发布于 2020-02-12 12:32:01
看起来Dalli不支持Mcrouter,因为它使用Memcached二进制协议,而Memcached不支持Memcached二进制协议。
https://stackoverflow.com/questions/59651553
复制相似问题