spring-projects / spring-projects/spring-data-redis

Port Resolving Support in Spring-Data-Redis for Jedis

Open
#2,781 2 comments 0 reactions 1 assignee View on GitHub

@mp911de is already working on this.

Since Nov 27, 2023.

type: enhancement
Dominant language
Java
Stars
1.9k
Forks
1.3k
PR merge metrics
No merged PRs in 30d

Description

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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.