【问题标题】:Connection error when running memcached with dalli使用 dalli 运​​行 memcached 时出现连接错误
【发布时间】:2013-07-30 21:33:21
【问题描述】:

我无法从 Dalli 连接到在 localhost 上运行的 Memcached 服务器。尽管我没有在本地运行 Memcached 的经验,但我一直在使用 Dalli 和 Memcachier Heroku 插件,没有任何问题。

我用自制软件下载了 memcached,它似乎安装没有问题。我是这样运行的:

memcached -l 127.0.0.1 -p 11211 -vv

我可以连接到服务器并查询它

telnet 127.0.0.1 11211

memcached 的详细输出记录了所有请求,所以我知道它运行良好。但是,我无法使用 Dalli 运​​行它。我正在尝试这样连接:

require 'dalli'
dc = Dalli::Client.new('127.0.0.1:11211')
dc.set('foo', 123)

在我运行最后一个命令后,Dalli 不断吐出

Dalli::RingError: No server available
 from /Users/mac/.rvm/gems/ruby-1.9.3-p392/gems/dalli-2.6.4/lib/dalli/ring.rb:45:in     `server_for_key'
 from /Users/mac/.rvm/gems/ruby-1.9.3-p392/gems/dalli-2.6.4/lib/dalli/client.rb:347:in `perform'
 from /Users/mac/.rvm/gems/ruby-1.9.3-p392/gems/dalli-2.6.4/lib/dalli/client.rb:199:in `set'

...所以我收到此连接错误,但我不知道为什么。这是奇怪的部分:Memcached 正在接收请求,但它从未成功连接。每当我尝试连接时,详细输出都会吐出以下两行:

<6 new client connection
<6 connection closed.

那么这里发生了什么?这是身份验证的事情吗?我忘记了命令行选项吗?

编辑:弄清楚发生了什么——除了我使用的是内置版本的 Memcached 之外,我做的一切都是正确的。安装了最新版本,一切都很好。

【问题讨论】:

    标签: ruby memcached dalli


    【解决方案1】:

    其实很简单的问题:我只是使用过时的 Memcached 版本。不知道为什么这会破坏 Dalli,但安装一个新的 Memcached 修复了它。

    【讨论】:

      【解决方案2】:

      这会破坏 dalli,因为 dalli 使用较新的二进制 memcached 协议而不是较旧的纯文本协议。

      这样做是为了提高性能,但不幸的是,dalli 无法在 memcached 1.4 之前的版本中使用

      【讨论】:

        猜你喜欢
        • 2012-12-11
        • 1970-01-01
        • 2013-06-05
        • 2020-02-02
        • 2016-07-21
        • 2017-07-24
        • 1970-01-01
        • 1970-01-01
        • 2020-03-05
        相关资源
        最近更新 更多