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 e3df62abf..a2cbf9cda 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 @@ -45,6 +45,8 @@ public interface BoundZSetOperations extends KeyBound { Boolean add(V value, double score); + Double incrementScore(V value, double delta); + Long rank(Object o); Long reverseRank(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 412ee6a19..6feec78e0 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 @@ -44,6 +44,11 @@ class DefaultBoundZSetOperations extends DefaultKeyBound implements Bou return ops.add(getKey(), value, score); } + @Override + public Double incrementScore(V value, double delta) { + return ops.incrementScore(getKey(), value, delta); + } + @Override public RedisOperations getOperations() { return ops.getOperations(); 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 9c5bdbf50..acbcff420 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 @@ -1155,6 +1155,19 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation }, true); } + @Override + public Double incrementScore(K key, V value, final double delta) { + final byte[] rawKey = rawKey(key); + final byte[] rawValue = rawValue(value); + + return execute(new RedisCallback() { + @Override + public Double doInRedis(RedisConnection connection) { + return connection.zIncrBy(rawKey, delta, rawValue); + } + }, true); + } + @Override public RedisOperations getOperations() { return RedisTemplate.this; 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 9f897e42f..0b65fb011 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 @@ -28,16 +28,18 @@ public interface ZSetOperations { void intersectAndStore(K key, K destKey, Collection keys); + void unionAndStore(K key, K destKey, Collection keys); + Set range(K key, long start, long end); Set rangeByScore(K key, double min, double max); Set reverseRange(K key, long start, long end); - void unionAndStore(K key, K destKey, Collection keys); - Boolean add(K key, V value, double score); + Double incrementScore(K key, V value, double delta); + Long rank(K key, Object o); Long reverseRank(K key, Object o);