在Java中使用spymemcached设置Amazon ElastiCache

Cra*_*aig 7 memcached amazon-web-services spymemcached amazon-elasticache

我无法在Amazon Cloud上找到关于Memcached的好教程,而且我对这整个缓存事件都很陌生.我试图通过亚马逊的ElastiCache服务和spymemcached客户端使用memcached来实际进行memcached调用.

这就是我现在用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();
    }
Run Code Online (Sandbox Code Playgroud)

我尝试这个时得到的错误是:

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, topWop=net.spy.memcached.protocol.ascii.StoreOperationImpl@be8c3e, 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
Run Code Online (Sandbox Code Playgroud)

有人对此有任何想法或经验吗?谢谢!

Ano*_*eri 3

你在哪里执行这个?来自 EC2 实例中或来自外部网络。请记住,ElastiCache 服务器受安全组绑定,该安全组限制对 ElastiCAche 实例的访问。因此,请检查允许您连接到 Memcached 服务器的安全组和其他配置。据我所知,ElastiCache无法从AWS边界之外访问

其余代码看起来不错,c考虑使用 Spring 等框架来处理 memcache 客户端对象实例化和相关配置。