使用Java Redis客户端(生菜)连接到Amazon ElastiCache

时间:2015-09-16 12:06:34

标签: java amazon-ec2 redis

。 。可以使用java redis客户端(生菜)从本地计算机连接到Amazon Elastic Cache吗?

我已将安全组中的入站规则定义为TCP端口6379,将SSH端口22定义为任何IP地址。

我的连接代码是:

RedisClient redisClient = new RedisClient("CacheCluster Endpoint", 6379);

RedisConnection<String, String> connection = redisClient.connect();

connection.set("key", "Hello, Redis!");

connection.close();
redisClient.shutdown();

我运行这个java,我得到了:

Exception in thread "main" com.lambdaworks.redis.RedisConnectionException: Unable to connect to mycachecluster.b4ujee.0001.usw2.cache.amazonaws.com/172.31.34.211:6379
    at com.lambdaworks.redis.AbstractRedisClient.initializeChannel(AbstractRedisClient.java:214)
    at com.lambdaworks.redis.RedisClient.connectAsync(RedisClient.java:322)
    at com.lambdaworks.redis.RedisClient.connectAsync(RedisClient.java:303)
    at com.lambdaworks.redis.RedisClient.connect(RedisClient.java:259)
    at com.lambdaworks.redis.RedisClient.connect(RedisClient.java:238)
    at com.lambdaworks.redis.RedisClient.connect(RedisClient.java:222)
    at project1.JavaRedis.main(JavaRedis.java:17)
Caused by: java.net.ConnectException: Connection timed out: no further information: mycachecluster.b4ujee.0001.usw2.cache.amazonaws.com/172.31.34.211:6379
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:574)
    at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:224)
    at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:289)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:528)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
    at java.lang.Thread.run(Thread.java:619)

所以我的问题是:我做错了什么?我是否可以使用ClusterRedis EndPoint或EC2 DNS来建立连接?

请帮忙!!!

感谢!!!

2 个答案:

答案 0 :(得分:1)

不,您无法连接到它,因为它没有公共IP。 DNS名称解析为专用IP,172.31.34.211,只能从您的AWS VPC访问。
此外,对于连接,您需要使用DNS而不是IP,因为节点的IP可能会更改。 如果需要使用Redis进行本地开发,则可以在本地计算机上轻松安装一个实例。

答案 1 :(得分:1)

如果您仍希望从本地连接到AWS ElastiCache(redis)而无需在AWS中托管您的Web服务,则最好的方法是通过VPN。

我们正在使用https://pritunl.com,这很容易配置和使用。