2

Dalli から localhost で実行されている Memcached サーバーに接続できません。Memcached をローカルで実行した経験はありませんが、Dalli と Memcachier Heroku アドオンをしばらく問題なく使用しています。

memcached を homebrew でダウンロードしたところ、問題なくインストールできたようです。私はこのように実行しています:

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::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 はリクエストを受信して​​いますが、接続に成功することはありません。接続しようとするたびに、次の 2 行が詳細出力によって吐き出されます。

<6 new client connection
<6 connection closed.

それで、ここで何が起こっているのですか?これは認証のことですか?コマンドライン オプションを忘れていませんか?

編集: 何が起こっているのかを理解しました-組み込みバージョンのMemcachedを使用していたことを除いて、私はすべてを正しく行っていました。最新バージョンをインストールし、すべて問題ありませんでした。

4

2 に答える 2

3

実際には非常に単純な問題です。古いバージョンの Memcached を使用していました。なぜそれがダリを壊すのか分かりませんが、新しい Memcached をインストールすると修正されました。

于 2013-08-01T15:58:30.103 に答える
1

dalli は古いテキストのみのプロトコルではなく、新しいバイナリ memcached プロトコルを使用するため、dalli が壊れます。

パフォーマンスのためにこれを行いますが、残念ながら、memcached 1.4 より古いバージョンでは dalli を使用できなくなります。

于 2013-09-30T21:18:25.377 に答える