redis / ioredis

🚀 A robust, performance-focused, and full-featured Redis client for Node.js.
MIT License
14.07k stars 1.19k forks source link

Jedis connect aws elasticache for redis cluster issues #1839

Open lgb861213 opened 7 months ago

lgb861213 commented 7 months ago

How to use jedis connection in aws elasticache for redis cluster? Because it provides the endpoint of the cluster.

lgb861213 commented 7 months ago

the code is following: package org.example;

import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import redis.clients.jedis.*;

import java.util.HashSet; import java.util.Set;

public class RedisCluster {

public static void main(String[] args) {
    String endpoint="cxxxxxg.demo.xxxxx.xxxxxx.cache.amazonaws.com";
    int port=6379;
    String pass="Aaxxxxxxx6";
    String user="admin";
    int connectionTimeOut=2000;
    int soTimeOut=2000;
    int maxAttemps=5;
    //Redis集群节点的HostAndPort
    Set<HostAndPort> jedisClusterNodes=new HashSet<>();
    jedisClusterNodes.add(new HostAndPort(endpoint,port));
    //连接池配置
    GenericObjectPoolConfig<Connection> poolConfig=new GenericObjectPoolConfig<>();
    poolConfig.setMaxTotal(100);
    poolConfig.setMaxIdle(20);
    poolConfig.setMinIdle(10);

    //创建JedisCluster对象
    JedisCluster jedisCluster=new JedisCluster(jedisClusterNodes,connectionTimeOut,soTimeOut,maxAttemps,pass,user,null,poolConfig,true);
    // 使用JedisCluster执行Redis命令
    /*
    jedisCluster.set("mykey", "myvalue");
    String value = jedisCluster.get("mykey");
    System.out.println("Value: " + value);
     */

    // 关闭JedisCluster连接
    jedisCluster.close();

}

} and run it ,it show Exception in thread "main" redis.clients.jedis.exceptions.JedisClusterOperationException: Could not initialize cluster slots cache. at redis.clients.jedis.providers.ClusterConnectionProvider.initializeSlotsCache(ClusterConnectionProvider.java:61) at redis.clients.jedis.providers.ClusterConnectionProvider.(ClusterConnectionProvider.java:34) at redis.clients.jedis.UnifiedJedis.(UnifiedJedis.java:159) at redis.clients.jedis.JedisCluster.(JedisCluster.java:182) at redis.clients.jedis.JedisCluster.(JedisCluster.java:175) at redis.clients.jedis.JedisCluster.(JedisCluster.java:168) at org.example.RedisCluster.main(RedisCluster.java:33) Suppressed: redis.clients.jedis.exceptions.JedisAccessControlException: WRONGPASS invalid username-password pair or user is disabled. at redis.clients.jedis.Protocol.processError(Protocol.java:101) at redis.clients.jedis.Protocol.process(Protocol.java:162) at redis.clients.jedis.Protocol.read(Protocol.java:221) at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:351) at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:269) at redis.clients.jedis.Connection.helloOrAuth(Connection.java:484) at redis.clients.jedis.Connection.initializeFromClientConfig(Connection.java:402) at redis.clients.jedis.Connection.(Connection.java:57) at redis.clients.jedis.providers.ClusterConnectionProvider.initializeSlotsCache(ClusterConnectionProvider.java:47) ... 6 more

Process finished with exit code 1

How can I to fix it.