推荐使用什么方式通过编程连接到Amazon MemoryDB for Redis?

8ehkhllq  于 2023-03-11  发布在  Redis
关注(0)|答案(1)|浏览(166)

我是Redis和Amazon MemoryDB的新手,目前我可以使用Amazon MemoryDB启动Redis集群,遵循aws document
redis-cli用于链接到我的redis集群(从VPC内的另一个EC2示例):

>> redis-cli -c --tls -h my-redis-cluster.idocmu.memorydb.us-west-2.amazonaws.com -p 6379
my-redis-cluster.idocmu.memorydb.us-west-2.amazonaws.com:6379> PING
PONG

当我尝试在同一个EC2示例中使用python/Java连接到它时,连接始终不起作用:

>> python3
Python 3.7.16 (default, Dec 15 2022, 23:24:54) 
[GCC 7.3.1 20180712 (Red Hat 7.3.1-15)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import redis
>>> r = redis.RedisCluster(host="my-redis-cluster.idocmu.memorydb.us-west-2.amazonaws.com", port=6379)

... python3 fronzen here...

Jedis Java客户端也是如此:

import redis.clients.jedis.Jedis;
Jedis jedis = new Jedis("my-redis-cluster.idocmu.memorydb.us-west-2.amazonaws.com", 6379);
jedis.set("key100", "value100");

... java connection timeout here...

我错过了什么吗?为什么redis-cli可以连接而我的脚本不能?
还尝试了Redis页面中列出的一些其他客户端:https://redis.io/resources/clients/ Redission也无法连接。看起来我的设置有问题。但是我不明白为什么redis-cli可以连接。

fruv7luv

fruv7luv1#

这是因为当您使用recis-cli连接时,您提供了--tls(意味着您的集群配置了传输中加密)。
但是,当您连接其他客户端时,您不使用TLS。例如,为了连接redis-py,您需要提供ssl=True

redis.RedisCluster(host="my-redis-cluster.idocmu.memorydb.us-west-2.amazonaws.com", port=6379, ssl=True)

参见示例here

相关问题