diff --git a/pom.xml b/pom.xml
index 74369f5ab8..8cae321b65 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-redis
- 2.5.0-SNAPSHOT
+ 2.5.0-1992-SNAPSHOT
Spring Data Redis
diff --git a/src/main/java/org/springframework/data/redis/connection/DefaultStringRedisConnection.java b/src/main/java/org/springframework/data/redis/connection/DefaultStringRedisConnection.java
index 83d57d2ae9..d85d8dedd1 100644
--- a/src/main/java/org/springframework/data/redis/connection/DefaultStringRedisConnection.java
+++ b/src/main/java/org/springframework/data/redis/connection/DefaultStringRedisConnection.java
@@ -3731,6 +3731,11 @@ public void migrate(byte[] key, RedisNode target, int dbIndex, @Nullable Migrate
delegate.migrate(key, target, dbIndex, option, timeout);
}
+ @Override
+ public void rewriteConfig() {
+ delegate.rewriteConfig();
+ }
+
/*
* (non-Javadoc)
* @see org.springframework.data.redis.connection.StringRedisConnection#xAck(java.lang.String, java.lang.String, RecordId[])
diff --git a/src/main/java/org/springframework/data/redis/connection/RedisServerCommands.java b/src/main/java/org/springframework/data/redis/connection/RedisServerCommands.java
index c9b7041be5..799b5e0e27 100644
--- a/src/main/java/org/springframework/data/redis/connection/RedisServerCommands.java
+++ b/src/main/java/org/springframework/data/redis/connection/RedisServerCommands.java
@@ -280,4 +280,9 @@ default Long time() {
* @see Redis Documentation: MIGRATE
*/
void migrate(byte[] key, RedisNode target, int dbIndex, @Nullable MigrateOption option, long timeout);
+
+ /**
+ * Rewrites the redis.conf file.
+ */
+ void rewriteConfig();
}
diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterConnection.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterConnection.java
index 76926df045..6bd6fcbfa7 100644
--- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterConnection.java
+++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterConnection.java
@@ -869,6 +869,11 @@ public RedisSentinelConnection getSentinelConnection() {
throw new UnsupportedOperationException("Sentinel is currently not supported for JedisClusterConnection.");
}
+ @Override
+ public void rewriteConfig() {
+ serverCommands().rewriteConfig();
+ }
+
/**
* {@link Jedis} specific {@link ClusterCommandCallback}.
*
diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterServerCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterServerCommands.java
index 14c5c25c1d..075f9feed0 100644
--- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterServerCommands.java
+++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterServerCommands.java
@@ -520,6 +520,12 @@ public void migrate(byte[] key, RedisNode target, int dbIndex, @Nullable Migrate
node);
}
+ @Override
+ public void rewriteConfig() {
+ connection.getClusterCommandExecutor()
+ .executeCommandOnAllNodes((JedisClusterCommandCallback) client -> client.configRewrite());
+ }
+
private Long convertListOfStringToTime(List serverTimeInformation, TimeUnit timeUnit) {
Assert.notEmpty(serverTimeInformation, "Received invalid result from server. Expected 2 items in collection.");
diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnection.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnection.java
index 22ab9a0b39..d0f11227c1 100644
--- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnection.java
+++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisConnection.java
@@ -806,4 +806,8 @@ private void doWithJedis(Consumer callback) {
}
}
+ @Override
+ public void rewriteConfig() {
+ serverCommands().rewriteConfig();
+ }
}
diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisServerCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisServerCommands.java
index a5db0aa56e..b8c0c319a8 100644
--- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisServerCommands.java
+++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisServerCommands.java
@@ -317,6 +317,11 @@ public void migrate(byte[] key, RedisNode target, int dbIndex, @Nullable Migrate
target.getPort(), key, dbIndex, timeoutToUse);
}
+ @Override
+ public void rewriteConfig() {
+ connection.invokeStatus().just(Jedis::configRewrite);
+ }
+
private boolean isPipelined() {
return connection.isPipelined();
}
diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnection.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnection.java
index 708344cc28..f8eff3c15e 100644
--- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnection.java
+++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceConnection.java
@@ -137,6 +137,11 @@ LettuceResult newLettuceStatusResult(Future resultHolder) {
return LettuceResultBuilder. forResponse(resultHolder).buildStatusResult();
}
+ @Override
+ public void rewriteConfig() {
+ serverCommands().rewriteConfig();
+ }
+
private class LettuceTransactionResultConverter extends TransactionResultConverter {
public LettuceTransactionResultConverter(Queue> txResults,
Converter exceptionConverter) {
diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceServerCommands.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceServerCommands.java
index 67555c4c49..5294e0d8e6 100644
--- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceServerCommands.java
+++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceServerCommands.java
@@ -304,6 +304,11 @@ public void migrate(byte[] key, RedisNode target, int dbIndex, @Nullable Migrate
connection.invoke().just(RedisKeyAsyncCommands::migrate, target.getHost(), target.getPort(), key, dbIndex, timeout);
}
+ @Override
+ public void rewriteConfig() {
+ connection.invoke().just(RedisServerAsyncCommands::configRewrite);
+ }
+
public RedisClusterCommands getConnection() {
return connection.getConnection();
}
diff --git a/src/test/java/org/springframework/data/redis/connection/RedisConnectionUnitTests.java b/src/test/java/org/springframework/data/redis/connection/RedisConnectionUnitTests.java
index 76e5252dea..4f730ced5a 100644
--- a/src/test/java/org/springframework/data/redis/connection/RedisConnectionUnitTests.java
+++ b/src/test/java/org/springframework/data/redis/connection/RedisConnectionUnitTests.java
@@ -983,6 +983,11 @@ public void migrate(byte[] key, RedisNode target, int dbIndex, MigrateOption opt
delegate.migrate(key, target, dbIndex, option, timeout);
}
+ @Override
+ public void rewriteConfig() {
+ delegate.rewriteConfig();
+ }
+
@Override
public Boolean set(byte[] key, byte[] value, Expiration expiration, SetOption options) {
return delegate.set(key, value, expiration, options);