From 69fb3a996ba796e49b0ab496a1f9a438eae2b417 Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Wed, 8 Dec 2010 22:34:25 +0200 Subject: [PATCH] add rightPopLeftPush to list operations --- .../data/keyvalue/redis/core/ListOperations.java | 2 +- .../data/keyvalue/redis/core/RedisTemplate.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ListOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ListOperations.java index 6f1ebf3c5..ed423f454 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ListOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ListOperations.java @@ -49,7 +49,7 @@ public interface ListOperations { V rightPop(K key, long timeout, TimeUnit unit); - void rightPopAndLeftPush(K sourceKey, K destinationKey); + V rightPopAndLeftPush(K sourceKey, K destinationKey); RedisOperations getOperations(); } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisTemplate.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisTemplate.java index 59d546f1c..ff6078d17 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisTemplate.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisTemplate.java @@ -890,6 +890,18 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation }, true); } + @Override + public V rightPopAndLeftPush(K sourceKey, K destinationKey) { + final byte[] rawDestKey = rawKey(destinationKey); + + return execute(new ValueDeserializingRedisCallback(sourceKey) { + @Override + protected byte[] inRedis(byte[] rawSourceKey, RedisConnection connection) { + return connection.rPopLPush(rawSourceKey, rawDestKey); + } + }, true); + } + @Override public void set(K key, final long index, V value) { final byte[] rawValue = rawValue(value);