From 2a397015d2ee28acd3bfba536f9e644bc88ff107 Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Wed, 8 Dec 2010 22:28:08 +0200 Subject: [PATCH] + add missing getOperation to bound ops interfaces --- .../redis/core/BoundKeyOperations.java | 47 ------------------- .../redis/core/BoundValueOperations.java | 2 + .../core/DefaultBoundValueOperations.java | 5 ++ .../keyvalue/redis/core/ListOperations.java | 2 + .../keyvalue/redis/core/RedisTemplate.java | 19 ++++++-- .../keyvalue/redis/core/SetOperations.java | 3 +- .../keyvalue/redis/core/ValueOperations.java | 2 + 7 files changed, 27 insertions(+), 53 deletions(-) delete mode 100644 spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundKeyOperations.java diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundKeyOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundKeyOperations.java deleted file mode 100644 index 69de46eb9..000000000 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundKeyOperations.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright 2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.data.keyvalue.redis.core; - -import java.util.Date; -import java.util.concurrent.TimeUnit; - -import org.springframework.data.keyvalue.redis.connection.DataType; - -/** - * Key operations bound to a certain value. - * - * @author Costin Leau - */ -public interface BoundKeyOperations extends KeyBound { - - Boolean exists(); - - void delete(); - - DataType type(); - - void rename(K newKey); - - Boolean renameIfAbsent(K newKey); - - Boolean expire(long timeout, TimeUnit unit); - - Boolean expireAt(Date date); - - Long getExpire(); - - void persist(); -} diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundValueOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundValueOperations.java index 4e8eb4f6d..e751e3d91 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundValueOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/BoundValueOperations.java @@ -24,6 +24,8 @@ import java.util.concurrent.TimeUnit; */ public interface BoundValueOperations extends KeyBound { + RedisOperations getOperations(); + void set(V value); void set(V value, long timeout, TimeUnit unit); diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundValueOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundValueOperations.java index 3e459ff78..67fb2eba1 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundValueOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundValueOperations.java @@ -64,4 +64,9 @@ class DefaultBoundValueOperations extends DefaultKeyBound implements Bo public Boolean setIfAbsent(V value) { return ops.setIfAbsent(getKey(), value); } + + @Override + public RedisOperations getOperations() { + return ops.getOperations(); + } } \ No newline at end of file diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ListOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ListOperations.java index 8a7f99707..6f1ebf3c5 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ListOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ListOperations.java @@ -49,5 +49,7 @@ public interface ListOperations { V rightPop(K key, long timeout, TimeUnit unit); + void rightPopAndLeftPush(K sourceKey, K destinationKey); + RedisOperations 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 acc89699d..59d546f1c 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 @@ -72,6 +72,12 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation private RedisSerializer hashKeySerializer = new SimpleRedisSerializer(); private RedisSerializer hashValueSerializer = new SimpleRedisSerializer(); + // cache singleton objects (where possible) + private final ValueOperations valueOps = new DefaultValueOperations(); + private final ListOperations listOps = new DefaultListOperations(); + private final SetOperations setOps = new DefaultSetOperations(); + private final ZSetOperations zSetOps = new DefaultZSetOperations(); + /** * Constructs a new RedisTemplate instance. * @@ -567,7 +573,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation @Override public ValueOperations getValueOps() { - return new DefaultValueOperations(); + return valueOps; } private class DefaultValueOperations implements ValueOperations { @@ -722,11 +728,16 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation } }, true); } + + @Override + public RedisOperations getOperations() { + return RedisTemplate.this; + } } @Override public ListOperations getListOps() { - return new DefaultListOperations(); + return listOps; } @Override @@ -919,7 +930,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation @Override public SetOperations getSetOps() { - return new DefaultSetOperations(); + return setOps; } private class DefaultSetOperations implements SetOperations { @@ -1079,7 +1090,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation @Override public ZSetOperations getZSetOps() { - return new DefaultZSetOperations(); + return zSetOps; } private class DefaultZSetOperations implements ZSetOperations { diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/SetOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/SetOperations.java index 08c5a806c..7eb5817c8 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/SetOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/SetOperations.java @@ -30,8 +30,6 @@ public interface SetOperations { void diffAndStore(K key, K destKey, Collection keys); - RedisOperations getOperations(); - Set intersect(K key, Collection keys); void intersectAndStore(K key, K destKey, Collection keys); @@ -50,4 +48,5 @@ public interface SetOperations { Long size(K key); + RedisOperations getOperations(); } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ValueOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ValueOperations.java index 2a4a41395..a56ed96ce 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ValueOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/ValueOperations.java @@ -43,4 +43,6 @@ public interface ValueOperations { Collection multiGet(Collection keys); Long increment(K key, long delta); + + RedisOperations getOperations(); }