7

我一直無法在Amazon Cloud上找到關於Memcached的良好教程,我對這整個緩存事情很陌生。 我試圖通過亞馬遜的ElastiCache服務和一個間諜緩存客戶端使用memcached來實際進行memcached調用。在Java中設置Amazon ElastiCache w/spymemcached

下面是我在做什麼用Java現在:

try { 
     ConnectionFactoryBuilder connectionFactoryBuilder = new ConnectionFactoryBuilder(); 
     MemcachedClient memcachedClient = new MemcachedClient(
       connectionFactoryBuilder.build(), 
       AddrUtil.getAddresses("<beginning of cache node end point grabbed from AWS Console>.cache.amazonaws.com:11211")); 
     memcachedClient.set("test", 12, new Integer(12)); 
     System.out.println(memcachedClient.get("test")); 
    } catch (IOException ioException) { 
     ioException.printStackTrace(); 
    } 

,我得到的錯誤,當我嘗試是這樣的:

java.net.ConnectException: Connection refused 
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) 
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:414) 
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:278) 
at net.spy.memcached.MemcachedClient.run(MemcachedClient.java:1981) 
2012-02-01 19:25:35.415 WARN net.spy.memcached.MemcachedConnection: Closing, and  reopening {QA sa=<node endpoint>.cache.amazonaws.com/184.73.64.56:11211, #Rops=0, #Wops=2, #iq=0, topRop=null, [email protected]e, toWrite=0, interested=0}, attempt 1. 
net.spy.memcached.OperationTimeoutException: Timeout waiting for value 
at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1142) 
at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1157) 
at com.amazon.imaging.demo.SQSQueueManager.requeue(SQSQueueManager.java:117) 
at com.amazon.imaging.demo.SQSQueueManager.requeue(SQSQueueManager.java:88) 
at com.amazon.imaging.demo.DemoUI$4.run(DemoUI.java:368) 
at com.amazon.imaging.demo.DemoUI.main(DemoUI.java:391) 
Caused by: net.spy.memcached.internal.CheckedOperationTimeoutException: Timed out waiting for operation - failing node: <node endpoint>.cache.amazonaws.com/184.73.64.56:11211 
at net.spy.memcached.internal.OperationFuture.get(OperationFuture.java:65) 
at net.spy.memcached.internal.GetFuture.get(GetFuture.java:37) 
at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1135) 
... 5 more 

任何人得到這個任何想法或經驗? 謝謝!

回答

2

你在哪裏執行此操作?在EC2實例中或從外部網絡中。請記住,ElastiCache服務器受限於訪問ElastiCAche實例的安全組。因此,請檢出安全組和允許您連接到Memcached服務器的其他配置。據我所知,ElastiCache不能從外部AWS邊界訪問

其餘代碼看起來不錯,並且cConsider使用像Spring這樣的框架來處理memcache客戶端對象實例化和相關配置。