From 16838c187587cfd05edbfc80ac1faba8dc13b3e5 Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Fri, 26 Nov 2010 12:26:02 +0200 Subject: [PATCH] + add more operations on ZSet contract --- .../redis/core/BoundZSetOperations.java | 6 ++++- .../core/DefaultBoundZSetOperations.java | 10 +++++++ .../keyvalue/redis/core/RedisTemplate.java | 26 +++++++++++++++++++ .../keyvalue/redis/core/ZSetOperations.java | 8 ++++-- 4 files changed, 47 insertions(+), 3 deletions(-) diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundZSetOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundZSetOperations.java index 4e784aa82..8db4ba749 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundZSetOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundZSetOperations.java @@ -34,6 +34,8 @@ public interface BoundZSetOperations extends KeyBound { Set rangeByScore(double min, double max); + Set reverseRange(int start, int end); + void removeRange(int start, int end); void removeRangeByScore(double min, double max); @@ -44,9 +46,11 @@ public interface BoundZSetOperations extends KeyBound { Integer rank(Object o); + Integer reverseRank(Object o); + boolean remove(Object o); int size(); - Set reverseRange(int start, int end); + Double score(Object o); } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundZSetOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundZSetOperations.java index c9fd0e03d..3769f8045 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundZSetOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundZSetOperations.java @@ -62,6 +62,16 @@ class DefaultBoundZSetOperations extends DefaultKeyBound 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); 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 5699fef1d..6506830c6 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 @@ -743,6 +743,19 @@ public class RedisTemplate 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() { + @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 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() { + @Override + public Double doInRedis(RedisConnection connection) { + return connection.zScore(rawKey, rawValue); + } + }, true); + } + @Override public int size(K key) { final byte[] rawKey = rawKey(key); diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ZSetOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ZSetOperations.java index 87b3fff21..d4d7059c8 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ZSetOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ZSetOperations.java @@ -31,6 +31,8 @@ public interface ZSetOperations { Set rangeByScore(K key, double min, double max); + Set 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 { 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 reverseRange(K key, int start, int end); - RedisOperations getOperations(); }