From bd9c8aaa25f707588215f189a00fe0e9540bf141 Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Wed, 8 Dec 2010 22:46:45 +0200 Subject: [PATCH] + add move and random member to set operations --- .../redis/core/BoundSetOperations.java | 4 +++ .../redis/core/DefaultBoundSetOperations.java | 10 ++++++++ .../keyvalue/redis/core/RedisTemplate.java | 25 +++++++++++++++++++ .../keyvalue/redis/core/SetOperations.java | 4 +++ 4 files changed, 43 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 944a62ced..35c3773a0 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 @@ -46,6 +46,10 @@ public interface BoundSetOperations extends KeyBound { Set members(); + Boolean move(K destKey, V value); + + V randomMember(); + Boolean remove(Object o); V pop(); 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 4db125290..2caed3155 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 @@ -80,6 +80,16 @@ class DefaultBoundSetOperations extends DefaultKeyBound implements Boun return ops.members(getKey()); } + @Override + public Boolean move(K destKey, V value) { + return ops.move(getKey(), destKey, value); + } + + @Override + public V randomMember() { + return ops.randomMember(getKey()); + } + @Override public Boolean remove(Object o) { return ops.remove(getKey(), o); 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 8ec6bbce1..59387c1f2 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 @@ -1041,6 +1041,31 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation return deserializeValues(rawValues, Set.class); } + @Override + public Boolean move(K key, K destKey, V value) { + final byte[] rawKey = rawKey(key); + final byte[] rawDestKey = rawKey(destKey); + final byte[] rawValue = rawValue(value); + + return execute(new RedisCallback() { + @Override + public Boolean doInRedis(RedisConnection connection) { + return connection.sMove(rawKey, rawDestKey, rawValue); + } + }, true); + } + + @Override + public V randomMember(K key) { + + return execute(new ValueDeserializingRedisCallback(key) { + @Override + protected byte[] inRedis(byte[] rawKey, RedisConnection connection) { + return connection.randomKey(); + } + }, true); + } + @Override public Boolean remove(K key, Object o) { 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 15d233268..a16e44407 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 @@ -44,6 +44,10 @@ public interface SetOperations { Set members(K key); + Boolean move(K key, K destKey, V value); + + V randomMember(K key); + Boolean remove(K key, Object o); V pop(K key);