+ add more operations on ZSet contract

This commit is contained in:
Costin Leau
2010-11-26 12:26:02 +02:00
parent 46336f232a
commit 16838c1875
4 changed files with 47 additions and 3 deletions

View File

@@ -34,6 +34,8 @@ public interface BoundZSetOperations<K, V> extends KeyBound<K> {
Set<V> rangeByScore(double min, double max);
Set<V> reverseRange(int start, int end);
void removeRange(int start, int end);
void removeRangeByScore(double min, double max);
@@ -44,9 +46,11 @@ public interface BoundZSetOperations<K, V> extends KeyBound<K> {
Integer rank(Object o);
Integer reverseRank(Object o);
boolean remove(Object o);
int size();
Set<V> reverseRange(int start, int end);
Double score(Object o);
}

View File

@@ -62,6 +62,16 @@ class DefaultBoundZSetOperations<K, V> extends DefaultKeyBound<K> implements Bou
return ops.rank(getKey(), o);
}
@Override
public Integer reverseRank(Object o) {
return ops.reverseRank(getKey(), o);
}
@Override
public Double score(Object o) {
return ops.score(getKey(), o);
}
@Override
public boolean remove(Object o) {
return ops.remove(getKey(), o);

View File

@@ -743,6 +743,19 @@ public class RedisTemplate<K, V> extends RedisAccessor implements RedisOperation
}, true);
}
@Override
public Integer reverseRank(K key, Object o) {
final byte[] rawKey = rawKey(key);
final byte[] rawValue = rawValue(o);
return execute(new RedisCallback<Integer>() {
@Override
public Integer doInRedis(RedisConnection connection) {
return connection.zRevRank(rawKey, rawValue);
}
}, true);
}
@Override
public boolean remove(K key, Object o) {
final byte[] rawKey = rawKey(key);
@@ -794,6 +807,19 @@ public class RedisTemplate<K, V> extends RedisAccessor implements RedisOperation
return values(rawValues, Set.class);
}
@Override
public Double score(K key, Object o) {
final byte[] rawKey = rawKey(key);
final byte[] rawValue = rawValue(o);
return execute(new RedisCallback<Double>() {
@Override
public Double doInRedis(RedisConnection connection) {
return connection.zScore(rawKey, rawValue);
}
}, true);
}
@Override
public int size(K key) {
final byte[] rawKey = rawKey(key);

View File

@@ -31,6 +31,8 @@ public interface ZSetOperations<K, V> {
Set<V> rangeByScore(K key, double min, double max);
Set<V> reverseRange(K key, int start, int end);
void removeRange(K key, int start, int end);
void removeRangeByScore(K key, double min, double max);
@@ -41,11 +43,13 @@ public interface ZSetOperations<K, V> {
Integer rank(K key, Object o);
Integer reverseRank(K key, Object o);
Double score(K key, Object o);
boolean remove(K key, Object o);
int size(K key);
Set<V> reverseRange(K key, int start, int end);
RedisOperations<K, V> getOperations();
}