Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Adds support for redis URIs.
  • Loading branch information
mcarreira-esab committed Nov 15, 2021
commit 21bebc35e1e93f05fcb64b4630aa67c55e2e30df
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.github.siahsang.redutils;

import java.net.URI;
import org.github.siahsang.redutils.common.OperationCallBack;
import org.github.siahsang.redutils.common.RedUtilsConfig;
import org.github.siahsang.redutils.common.ThreadManager;
Expand Down Expand Up @@ -47,6 +48,13 @@ public RedUtilsLockImpl(final String hostAddress, final int port) {
this(hostAddress, port, 0);
}

public RedUtilsLockImpl(URI uri) {
this(new RedUtilsConfig
.RedUtilsConfigBuilder()
.uri(uri)
.build());
}

/**
* Use with master-replica configuration
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package org.github.siahsang.redutils.common;

import java.net.URI;
import java.net.URISyntaxException;

/**
* @author Javad Alimohammadi
*/
Expand All @@ -23,9 +26,7 @@ public class RedUtilsConfig {

private final int replicaCount;

private final String hostAddress;

public final int port;
private final URI uri;

private RedUtilsConfig(RedUtilsConfigBuilder redUtilsConfigBuilder) {
this.waitingTimeForReplicasMillis = redUtilsConfigBuilder.waitingTimeForReplicasMillis;
Expand All @@ -35,9 +36,7 @@ private RedUtilsConfig(RedUtilsConfigBuilder redUtilsConfigBuilder) {
this.lockMaxPoolSize = redUtilsConfigBuilder.maxPoolSize;
this.unlockedMessagePattern = redUtilsConfigBuilder.redUtilsUnLockedMessage;
this.replicaCount = redUtilsConfigBuilder.replicaCount;
this.hostAddress = redUtilsConfigBuilder.hostAddress;
this.port = redUtilsConfigBuilder.port;

this.uri = redUtilsConfigBuilder.parseUri();
}

public int getWaitingTimeForReplicasMillis() {
Expand Down Expand Up @@ -68,15 +67,10 @@ public int getReplicaCount() {
return replicaCount;
}

public String getHostAddress() {
return hostAddress;
}

public int getPort() {
return port;
public URI getUri() {
return uri;
}


public static final class RedUtilsConfigBuilder {
private int waitingTimeForReplicasMillis = 1000;

Expand All @@ -96,6 +90,8 @@ public static final class RedUtilsConfigBuilder {

private int port = DEFAULT_PORT;

private URI uri = null;

public RedUtilsConfig build() {
return new RedUtilsConfig(this);
}
Expand Down Expand Up @@ -144,5 +140,27 @@ public RedUtilsConfigBuilder port(int port) {
this.port = port;
return this;
}

public RedUtilsConfigBuilder uri(URI uri) {
this.uri = uri;
return this;
}

public RedUtilsConfigBuilder uri(String uri) {
this.uri = createUri(uri);
return this;
}

private URI createUri(String uri) {
try {
return new URI(uri);
} catch (URISyntaxException e) {
throw new IllegalArgumentException(e);
}
}

private URI parseUri() {
return uri != null ? uri : createUri(hostAddress + ":" + port);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,14 @@ public class JedisConnectionManager implements ConnectionManager<Jedis> {

private final Map<String, List<Jedis>> reservedConnections = new ConcurrentHashMap<>();


private final JedisPool channelConnectionPool;

public JedisConnectionManager(RedUtilsConfig redUtilsConfig) {
this.capacity.set(redUtilsConfig.getLockMaxPoolSize());

GenericObjectPoolConfig<Jedis> lockPoolConfig = ConnectionPoolFactory.makePool(capacity.get());
this.channelConnectionPool = new JedisPool(lockPoolConfig,
redUtilsConfig.getHostAddress(),
redUtilsConfig.getPort(),
redUtilsConfig.getUri(),
redUtilsConfig.getReadTimeOutMillis()
);
}
Expand Down