From 48d31da0fddd7c702ded872d2ba0fe7163b90994 Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Wed, 8 Dec 2010 22:39:53 +0200 Subject: [PATCH] + add pop to set operations --- .../data/keyvalue/redis/core/BoundSetOperations.java | 2 ++ .../keyvalue/redis/core/DefaultBoundSetOperations.java | 5 +++++ .../data/keyvalue/redis/core/RedisTemplate.java | 10 ++++++++++ .../data/keyvalue/redis/core/SetOperations.java | 2 ++ 4 files changed, 19 insertions(+) diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundSetOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundSetOperations.java index e9274e453..944a62ced 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundSetOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundSetOperations.java @@ -48,5 +48,7 @@ public interface BoundSetOperations extends KeyBound { Boolean remove(Object o); + V pop(); + Long size(); } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundSetOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundSetOperations.java index 8050abc2b..4db125290 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundSetOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundSetOperations.java @@ -85,6 +85,11 @@ class DefaultBoundSetOperations extends DefaultKeyBound implements Boun return ops.remove(getKey(), o); } + @Override + public V pop() { + return ops.pop(getKey()); + } + @Override public Long size() { return ops.size(getKey()); 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 ff6078d17..8ec6bbce1 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 @@ -1053,6 +1053,16 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation }, true); } + @Override + public V pop(K key) { + return execute(new ValueDeserializingRedisCallback(key) { + @Override + protected byte[] inRedis(byte[] rawKey, RedisConnection connection) { + return connection.sPop(rawKey); + } + }, true); + } + @Override public Long size(K key) { final byte[] rawKey = rawKey(key); diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/SetOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/SetOperations.java index 7eb5817c8..15d233268 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/SetOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/SetOperations.java @@ -46,6 +46,8 @@ public interface SetOperations { Boolean remove(K key, Object o); + V pop(K key); + Long size(K key); RedisOperations getOperations();