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 3d894ad86..96a5e7b35 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 @@ -723,11 +723,11 @@ public class JedisConnection implements RedisConnection { public Boolean move(byte[] key, int dbIndex) { try { if (isQueueing()) { - client.move(key, dbIndex); + transaction.move(key, dbIndex); return null; } if (isPipelined()) { - client.move(key, dbIndex); + pipeline.move(key, dbIndex); return null; } return (jedis.move(key, dbIndex) == 1); diff --git a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java index e7be6ad12..0f735970f 100644 --- a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java @@ -1611,6 +1611,21 @@ public abstract class AbstractConnectionIntegrationTests { Arrays.asList(new String[] { "foo", "bar" }) }), actual); } + @Test + public void testMove() { + connection.set("foo", "bar"); + actual.add(connection.move("foo", 1)); + verifyResults(Arrays.asList(new Object[] { true}), actual); + connection.select(1); + try { + assertEquals("bar",connection.get("foo")); + } finally { + if(connection.exists("foo")) { + connection.del("foo"); + } + } + } + protected void verifyResults(List expected, List actual) { assertEquals(expected, convertResults(true)); } diff --git a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionPipelineIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionPipelineIntegrationTests.java index e03f571fb..6b73b2616 100644 --- a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionPipelineIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionPipelineIntegrationTests.java @@ -1043,6 +1043,21 @@ abstract public class AbstractConnectionPipelineIntegrationTests extends verifyResults(Arrays.asList(new Object[] {Arrays.asList(new Object[] { 0l })}), actual); } + @Test + public void testMove() { + connection.set("foo", "bar"); + actual.add(connection.move("foo", 1)); + verifyResults(Arrays.asList(new Object[] { 1l }), actual); + connection.select(1); + try { + assertEquals("bar",connection.get("foo")); + } finally { + if(connection.exists("foo")) { + connection.del("foo"); + } + } + } + protected void initConnection() { connection.openPipeline(); } diff --git a/src/test/java/org/springframework/data/redis/connection/jredis/JRedisConnectionIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/jredis/JRedisConnectionIntegrationTests.java index 167e51edd..08aba3e96 100644 --- a/src/test/java/org/springframework/data/redis/connection/jredis/JRedisConnectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/jredis/JRedisConnectionIntegrationTests.java @@ -33,8 +33,10 @@ import org.springframework.data.redis.RedisConnectionFailureException; import org.springframework.data.redis.SettingsUtils; import org.springframework.data.redis.connection.AbstractConnectionIntegrationTests; import org.springframework.data.redis.connection.DefaultSortParameters; +import org.springframework.data.redis.connection.DefaultStringRedisConnection; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.SortParameters.Order; +import org.springframework.data.redis.connection.StringRedisConnection; import org.springframework.test.annotation.IfProfileValue; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -626,4 +628,24 @@ public class JRedisConnectionIntegrationTests extends AbstractConnectionIntegrat assertEquals("bar", stringSerializer.deserialize(response.getBulkData())); } + @Test + public void testMove() { + connection.set("foo", "bar"); + actual.add(connection.move("foo", 1)); + verifyResults(Arrays.asList(new Object[] { true}), actual); + // JRedis does not support select() on existing conn, create new one + JredisConnectionFactory factory2 = new JredisConnectionFactory(); + factory2.setDatabase(1); + factory2.afterPropertiesSet(); + StringRedisConnection conn2 = new DefaultStringRedisConnection(factory2.getConnection()); + try { + assertEquals("bar",conn2.get("foo")); + } finally { + if(conn2.exists("foo")) { + conn2.del("foo"); + } + conn2.close(); + } + } + } \ No newline at end of file diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionIntegrationTests.java index 7d98c2fc0..e1aed6f21 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionIntegrationTests.java @@ -22,6 +22,7 @@ import static org.junit.Assert.fail; import static org.junit.Assume.assumeTrue; import static org.springframework.data.redis.SpinBarrier.waitFor; +import java.util.Arrays; import java.util.concurrent.atomic.AtomicBoolean; import org.junit.Test; @@ -36,6 +37,7 @@ import org.springframework.data.redis.connection.DefaultStringRedisConnection; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.connection.RedisStringCommands.BitOperation; import org.springframework.data.redis.connection.ReturnType; +import org.springframework.data.redis.connection.StringRedisConnection; import org.springframework.test.annotation.IfProfileValue; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -261,4 +263,24 @@ public class LettuceConnectionIntegrationTests extends AbstractConnectionIntegra } }, 3000l)); } + + @Test + public void testMove() { + connection.set("foo", "bar"); + actual.add(connection.move("foo", 1)); + verifyResults(Arrays.asList(new Object[] { true}), actual); + // Lettuce does not support select when using shared conn, use a new conn factory + LettuceConnectionFactory factory2 = new LettuceConnectionFactory(); + factory2.setDatabase(1); + factory2.afterPropertiesSet(); + StringRedisConnection conn2 = new DefaultStringRedisConnection(factory2.getConnection()); + try { + assertEquals("bar",conn2.get("foo")); + } finally { + if(conn2.exists("foo")) { + conn2.del("foo"); + } + conn2.close(); + } + } } \ No newline at end of file diff --git a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionPipelineIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionPipelineIntegrationTests.java index 81c5e08cf..0e87f7202 100644 --- a/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionPipelineIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/lettuce/LettuceConnectionPipelineIntegrationTests.java @@ -42,8 +42,9 @@ import org.springframework.data.redis.TestCondition; import org.springframework.data.redis.connection.AbstractConnectionPipelineIntegrationTests; import org.springframework.data.redis.connection.DefaultStringRedisConnection; import org.springframework.data.redis.connection.DefaultStringTuple; -import org.springframework.data.redis.connection.ReturnType; import org.springframework.data.redis.connection.RedisStringCommands.BitOperation; +import org.springframework.data.redis.connection.ReturnType; +import org.springframework.data.redis.connection.StringRedisConnection; import org.springframework.data.redis.connection.StringRedisConnection.StringTuple; import org.springframework.test.annotation.IfProfileValue; import org.springframework.test.context.ContextConfiguration; @@ -449,6 +450,26 @@ public class LettuceConnectionPipelineIntegrationTests extends }, 3000l)); } + @Test + public void testMove() { + connection.set("foo", "bar"); + actual.add(connection.move("foo", 1)); + verifyResults(Arrays.asList(new Object[] { true}), actual); + // Lettuce does not support select when using shared conn, use a new conn factory + LettuceConnectionFactory factory2 = new LettuceConnectionFactory(); + factory2.setDatabase(1); + factory2.afterPropertiesSet(); + StringRedisConnection conn2 = new DefaultStringRedisConnection(factory2.getConnection()); + try { + assertEquals("bar",conn2.get("foo")); + } finally { + if(conn2.exists("foo")) { + conn2.del("foo"); + } + conn2.close(); + } + } + @SuppressWarnings({ "rawtypes", "unchecked" }) protected Object convertResult(Object result) { Object convertedResult = super.convertResult(result);