spring-data-redis icon indicating copy to clipboard operation
spring-data-redis copied to clipboard

Port Resolving Support in Spring-Data-Redis for Jedis

Open anish8129 opened this issue 1 year ago • 2 comments

Hi, I am trying to Test Redis Cluster Using TestContaienrs. I have used lettuce to test, which actually requires Manual NAT port mapping to resolve the SocketAddress.

Here is an example: RedisConfig.java

Requirement

I want to have similar support for jedis as well in Spring-Data-Redis.

Proposing Implementation

After going through the code I noticed this redis.clients.jedis.HostAndPortMapper class which we could use in the org.springframework.data.redis.connection.jedis.JedisClientConfiguration.

We need to add this new contract in the JedisClientConfiguration

/**
 * @return the optional {@link HostAndPortMapper}.
 */
 Optional<HostAndPortMapper> getHostAndPortMapper();

This will be implemented by the default DefaultJedisClientConfigurationBuilder

Implementation

I have tried this change on my local and tested as well. PR #2780 is the change I am proposing.

Sample Example

A sample example of how to use it is added in this repo Files to look for in this 👆 repo. JedisClusterBasedIntegrationTest.java RedisClusterTestContainer.java JedisClusterTestContainer.java

NOTE:

Please suggest a better way to handle this in jedis if it already exist.

anish8129 avatar Nov 20 '23 13:11 anish8129

When connecting to a Redis cluster, you can use RedisClusterConfiguration. Have you tried the following methods?

junghoon-vans avatar Nov 21 '23 06:11 junghoon-vans

When connecting to a Redis cluster, you can use RedisClusterConfiguration. Have you tried the following methods?

Yes I have used RedisClusterConfiguation when I am connecting to redis cluster. here is snippet link from the example project which I have mentioned in the description. https://github.com/anish8129/prom-service/blob/4caefa13d23728d80058a34b0b36aa5d8a12fe00/src/main/java/com/redis/util/RedisBeanUtils.java#L60-L67

anish8129 avatar Nov 22 '23 06:11 anish8129