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);