2013-06-21 64 views
2

我試圖使用memcache-client連接創建的amazon elastiCache集羣端點。 但正在錯誤與ruby一起使用memcache客戶端

MemCache::MemCacheError: No connection to server (testcachecluster.u098ed.cfg.us 
e1.cache.amazonaws.com:11211 DEAD (Timeout::Error: execution expired), will retr 
y at 2013-06-21 11:34:15 +0530) 
     from C:/ProgramData/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/me 
mcache-client-1.8.5/lib/memcache.rb:863:in `with_socket_management' 
     from C:/ProgramData/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/me 
mcache-client-1.8.5/lib/memcache.rb:370:in `block in set' 
     from C:/ProgramData/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/me 
mcache-client-1.8.5/lib/memcache.rb:886:in `with_server' 
     from C:/ProgramData/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/me 
mcache-client-1.8.5/lib/memcache.rb:361:in `set' 
     from (irb):5 
     from C:/ProgramData/RailsInstaller/Ruby1.9.3/bin/irb:12:in `<main>' 

但使用Amazon elastiCache集羣端點的本地主機instread我正確地得到。

irb(main):006:0> m = MemCache.new('localhost:11211') 
=> <MemCache: 1 servers, ns: nil, ro: false> 
irb(main):007:0> m.set 'abc', 'xyz' 
=> "STORED\r\n" 
irb(main):008:0> m.get 'abc' 
=> "xyz" 
irb(main):009:0> 
+0

你解決了這個問題嗎?我有類似的問題。 –

+0

不,我沒有解決這個問題!我用memcache和memcache客戶端,而不是memcache.but同樣的錯誤發生 – chinchu

+0

如果你有任何解決方案請幫助我也 – chinchu

回答

5

好的,對我來說,問題是安全組織。您只能從具有Elasticache安全組中所列安全組的ec2實例訪問Elasticache節點。

因此,對於我來說,我的ec2實例有一個「web」安全組。在elasticache中,我然後將「web」添加到「default」彈性緩存安全組。

這裏進一步解釋:http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/CacheSecurityGroup.html

而且,嘗試使用這兩種寶石:

https://github.com/mperham/dalli

https://github.com/ktheory/dalli-elasticache

我使用的是後者,並因爲它使用它的偉大工程自動發現節點。

+0

你可以告訴我們在config/initializers/session_store中使用什麼代碼。 rb和config/environments/production.rb與dalli-elasticache一起使用? –

+0

dalli-elasticache作品。我剛剛檢查了Rails 4.2.5 –

相關問題