diff --git a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterKeyCommands.java b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterKeyCommands.java index 9b2eb704e..11405f851 100644 --- a/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterKeyCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/jedis/JedisClusterKeyCommands.java @@ -270,7 +270,7 @@ class JedisClusterKeyCommands implements RedisKeyCommands { if (value != null && value.length > 0) { - restore(targetKey, 0, value); + restore(targetKey, 0, value, true); del(sourceKey); } } diff --git a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceClusterKeyCommands.java b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceClusterKeyCommands.java index fd1758c82..0d10e4d68 100644 --- a/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceClusterKeyCommands.java +++ b/src/main/java/org/springframework/data/redis/connection/lettuce/LettuceClusterKeyCommands.java @@ -118,7 +118,7 @@ class LettuceClusterKeyCommands extends LettuceKeyCommands { if (value != null && value.length > 0) { - restore(targetKey, 0, value); + restore(targetKey, 0, value, true); del(sourceKey); } } diff --git a/src/test/java/org/springframework/data/redis/connection/ClusterConnectionTests.java b/src/test/java/org/springframework/data/redis/connection/ClusterConnectionTests.java index d14ba43fe..54e4aaef3 100644 --- a/src/test/java/org/springframework/data/redis/connection/ClusterConnectionTests.java +++ b/src/test/java/org/springframework/data/redis/connection/ClusterConnectionTests.java @@ -413,6 +413,9 @@ public interface ClusterConnectionTests { // DATAREDIS-315 void rename(); + // DATAREDIS-1190 + void renameShouldOverwriteTargetKey(); + // DATAREDIS-315 void renameNXWhenOnSameSlot(); diff --git a/src/test/java/org/springframework/data/redis/connection/jedis/JedisClusterConnectionTests.java b/src/test/java/org/springframework/data/redis/connection/jedis/JedisClusterConnectionTests.java index 6c5203bcf..7dbddc466 100644 --- a/src/test/java/org/springframework/data/redis/connection/jedis/JedisClusterConnectionTests.java +++ b/src/test/java/org/springframework/data/redis/connection/jedis/JedisClusterConnectionTests.java @@ -1421,6 +1421,18 @@ public class JedisClusterConnectionTests implements ClusterConnectionTests { assertThat(nativeConnection.get(KEY_2_BYTES)).isEqualTo(VALUE_1_BYTES); } + @Test // DATAREDIS-1190 + public void renameShouldOverwriteTargetKey() { + + nativeConnection.set(KEY_1_BYTES, VALUE_1_BYTES); + nativeConnection.set(KEY_2_BYTES, VALUE_2_BYTES); + + clusterConnection.rename(KEY_1_BYTES, KEY_2_BYTES); + + assertThat(nativeConnection.exists(KEY_1_BYTES)).isFalse(); + assertThat(nativeConnection.get(KEY_2_BYTES)).isEqualTo(VALUE_1_BYTES); + } + @Test // DATAREDIS-315 public void renameNXWhenOnSameSlot() { diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceClusterConnectionTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceClusterConnectionTests.java index b00a45e61..46d278569 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceClusterConnectionTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceClusterConnectionTests.java @@ -1437,6 +1437,18 @@ public class LettuceClusterConnectionTests implements ClusterConnectionTests { assertThat(nativeConnection.get(KEY_2)).isEqualTo(VALUE_1); } + @Test // DATAREDIS-1190 + public void renameShouldOverwriteTargetKey() { + + nativeConnection.set(KEY_1, VALUE_1); + nativeConnection.set(KEY_2, VALUE_2); + + clusterConnection.rename(KEY_1_BYTES, KEY_2_BYTES); + + assertThat(nativeConnection.exists(KEY_1)).isEqualTo(0L); + assertThat(nativeConnection.get(KEY_2)).isEqualTo(VALUE_1); + } + @Test // DATAREDIS-315 public void renameNXWhenOnSameSlot() {