From 1b0a16cf1c975c20c261402ec5798781a25b765d Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Mon, 10 Jan 2011 17:44:37 +0200 Subject: [PATCH] + add support for zset count --- .../keyvalue/redis/core/BoundZSetOperations.java | 2 ++ .../redis/core/DefaultBoundZSetOperations.java | 5 +++++ .../data/keyvalue/redis/core/RedisTemplate.java | 12 ++++++++++++ .../data/keyvalue/redis/core/ZSetOperations.java | 2 ++ 4 files changed, 21 insertions(+) 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 a2cbf9cda..967ce1495 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 @@ -53,6 +53,8 @@ public interface BoundZSetOperations extends KeyBound { Boolean remove(Object o); + Long count(double min, double max); + Long size(); 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 6feec78e0..02b9b323a 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 @@ -104,6 +104,11 @@ class DefaultBoundZSetOperations extends DefaultKeyBound implements Bou return ops.reverseRange(getKey(), start, end); } + @Override + public Long count(double min, double max) { + return ops.count(getKey(), min, max); + } + @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 44f8f1311..4dbe693be 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 @@ -1488,6 +1488,18 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation }, true); } + @Override + public Long count(K key, final double min, final double max) { + final byte[] rawKey = rawKey(key); + + return execute(new RedisCallback() { + @Override + public Long doInRedis(RedisConnection connection) { + return connection.zCount(rawKey, min, max); + } + }, 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/ZSetOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ZSetOperations.java index 0b65fb011..e8665bee4 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 @@ -52,6 +52,8 @@ public interface ZSetOperations { void removeRangeByScore(K key, double min, double max); + Long count(K key, double min, double max); + Long size(K key); RedisOperations getOperations();