2013-07-30 2 views
2

Dalli의 localhost에서 실행중인 Memcached 서버에 연결하는 데 문제가 있습니다. Memcached를 로컬에서 실행하는 데 경험이 없지만 Dalli를 Memcachier Heroku 애드온과 함께 사용하고 있습니다.dalli로 memcached를 실행할 때 연결 오류가 발생했습니다.

memcached를 homebrew와 함께 다운로드했는데 문제없이 설치 한 것으로 보입니다. 내가 서버에 연결하여

telnet 127.0.0.1 11211 

memcached와 로그 모든 요청의 자세한 출력을 조회 할 수 있습니다

memcached -l 127.0.0.1 -p 11211 -vv 

, 그래서 그것을 잘 실행 것을 알고 :이처럼 실행 해요. 그러나 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가 요청을 받고 있지만 연결에 성공하지 못했습니다. 연결을 시도 할 때마다 다음 두 줄이 자세한 출력으로 나옵니다.

<6 new client connection 
<6 connection closed. 

그래서 어떻게됩니까? 이게 인증 일인가요? 명령 줄 옵션을 잊어 버렸습니까?

편집 :은 무슨 일이 있었는지 알아 냈어 - 내가 Memcached가의 내장 버전을 사용했다 권리를 제외하고 모든 일을했다. 최신 버전을 설치했고 모든 것이 잘되었습니다.

답변

3

아주 간단한 문제입니다. 사실 저는 오래된 Memcached 버전을 사용하고있었습니다. 왜 Dalli가 깨지는 지 모르지만 새로운 Memcached를 설치하면 문제가 해결되었습니다.

1

dalli가 이전 텍스트 전용 프로토콜 대신 최신 바이너리 memcached 프로토콜을 사용하기 때문에 dalli가 손상됩니다.

성능 향상을 위해이 작업을 수행하지만, 불행히도 memcached보다 오래된 버전에서는 사용할 수 없습니다. 1.4

관련 문제