+ add move and random member to set operations

This commit is contained in:
Costin Leau
2010-12-08 22:46:45 +02:00
parent 48d31da0fd
commit bd9c8aaa25
4 changed files with 43 additions and 0 deletions

View File

@@ -46,6 +46,10 @@ public interface BoundSetOperations<K, V> extends KeyBound<K> {
Set<V> members();
Boolean move(K destKey, V value);
V randomMember();
Boolean remove(Object o);
V pop();

View File

@@ -80,6 +80,16 @@ class DefaultBoundSetOperations<K, V> extends DefaultKeyBound<K> 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);

View File

@@ -1041,6 +1041,31 @@ public class RedisTemplate<K, V> 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<Boolean>() {
@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);

View File

@@ -44,6 +44,10 @@ public interface SetOperations<K, V> {
Set<V> 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);