From c1c61d1cc73da526bb22c79318e83c4ae513812d Mon Sep 17 00:00:00 2001 From: Costin Leau Date: Fri, 21 Jan 2011 21:59:01 +0200 Subject: [PATCH] + renamed get[X]Ops to -opsFor[X] + add Jedis 1.5.2 support --- spring-data-redis/pom.xml | 2 +- .../connection/jedis/JedisConnection.java | 17 +++++--- .../jedis/JedisConnectionFactory.java | 40 ++++++++++++++++--- .../core/DefaultBoundHashOperations.java | 2 +- .../core/DefaultBoundListOperations.java | 2 +- .../redis/core/DefaultBoundSetOperations.java | 2 +- .../core/DefaultBoundValueOperations.java | 2 +- .../core/DefaultBoundZSetOperations.java | 2 +- .../keyvalue/redis/core/RedisOperations.java | 10 ++--- .../keyvalue/redis/core/RedisTemplate.java | 10 ++--- .../support/atomic/RedisAtomicInteger.java | 4 +- .../redis/support/atomic/RedisAtomicLong.java | 4 +- 12 files changed, 67 insertions(+), 30 deletions(-) diff --git a/spring-data-redis/pom.xml b/spring-data-redis/pom.xml index 997cfc986..04b5b11a8 100644 --- a/spring-data-redis/pom.xml +++ b/spring-data-redis/pom.xml @@ -14,7 +14,7 @@ 03122010 - 1.5.1 + 1.5.2-SNAPSHOT diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnection.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnection.java index 9b0057682..e5620208b 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnection.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnection.java @@ -181,7 +181,14 @@ public class JedisConnection implements RedisConnection { try { if (isQueueing()) { - throw new UnsupportedOperationException("Jedis does not support sort&store in MULTI/EXEC mode."); + if (sortParams != null) { + transaction.sort(key, sortParams, sortKey); + } + else { + transaction.sort(key, sortKey); + } + + return null; } return (sortParams != null ? jedis.sort(key, sortParams, sortKey) : jedis.sort(key, sortKey)); } catch (Exception ex) { @@ -767,7 +774,7 @@ public class JedisConnection implements RedisConnection { // return null; throw new UnsupportedOperationException(); } - return (jedis.getbit(key, (int) offset) == 0 ? Boolean.FALSE : Boolean.TRUE); + return (jedis.getbit(key, offset) == 0 ? Boolean.FALSE : Boolean.TRUE); } catch (Exception ex) { throw convertJedisAccessException(ex); } @@ -781,7 +788,7 @@ public class JedisConnection implements RedisConnection { // return; throw new UnsupportedOperationException(); } - jedis.setbit(key, (int) offset, JedisUtils.asBit(value)); + jedis.setbit(key, offset, JedisUtils.asBit(value)); } catch (Exception ex) { throw convertJedisAccessException(ex); } @@ -995,7 +1002,7 @@ public class JedisConnection implements RedisConnection { if (isQueueing()) { throw new UnsupportedOperationException(); } - return jedis.brpoplpush(srcKey, dstKey, timeout).getBytes(); + return jedis.brpoplpush(srcKey, dstKey, timeout); } catch (Exception ex) { throw convertJedisAccessException(ex); } @@ -1667,8 +1674,8 @@ public class JedisConnection implements RedisConnection { } // FIXME: DATAKV-24 once Jedis adds support for binary messages - String msg = new String(message); String chn = new String(channel); + String msg = new String(message); return jedis.publish(chn, msg); } catch (Exception ex) { diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnectionFactory.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnectionFactory.java index 7579013a0..09f51d755 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnectionFactory.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/connection/jedis/JedisConnectionFactory.java @@ -18,7 +18,6 @@ package org.springframework.data.keyvalue.redis.connection.jedis; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.commons.pool.impl.GenericObjectPool; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.dao.DataAccessException; @@ -29,6 +28,7 @@ import org.springframework.util.StringUtils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; +import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.JedisShardInfo; import redis.clients.jedis.Protocol; @@ -48,11 +48,12 @@ public class JedisConnectionFactory implements InitializingBean, DisposableBean, private String password; private boolean usePool = true; - private JedisPool pool = null; + private JedisPoolConfig poolConfig = new JedisPoolConfig(); /** - * Constructs a new JedisConnectionFactory instance. + * Constructs a new JedisConnectionFactory instance + * with default settings (default connection pooling, no shard information). */ public JedisConnectionFactory() { } @@ -61,12 +62,23 @@ public class JedisConnectionFactory implements InitializingBean, DisposableBean, * Constructs a new JedisConnectionFactory instance. * Will override the other connection parameters passed to the factory. * - * @param shardInfo + * @param shardInfo shard information */ public JedisConnectionFactory(JedisShardInfo shardInfo) { this.shardInfo = shardInfo; } + /** + * Constructs a new JedisConnectionFactory instance using + * the given pool configuration. + * + * @param poolConfig pool configuration + */ + public JedisConnectionFactory(JedisPoolConfig poolConfig) { + this.poolConfig = poolConfig; + } + + /** * Returns a Jedis instance to be used as a Redis connection. * The instance can be newly created or retrieved from a pool. @@ -101,7 +113,7 @@ public class JedisConnectionFactory implements InitializingBean, DisposableBean, } if (usePool) { - pool = new JedisPool(new GenericObjectPool.Config(), shardInfo.getHost(), shardInfo.getPort(), + pool = new JedisPool(poolConfig, shardInfo.getHost(), shardInfo.getPort(), shardInfo.getTimeout(), shardInfo.getPassword()); } } @@ -233,4 +245,22 @@ public class JedisConnectionFactory implements InitializingBean, DisposableBean, public void setUsePool(boolean usePool) { this.usePool = usePool; } + + /** + * Returns the poolConfig. + * + * @return Returns the poolConfig + */ + public JedisPoolConfig getPoolConfig() { + return poolConfig; + } + + /** + * Sets the pool configuration for this factory. + * + * @param poolConfig The poolConfig to set. + */ + public void setPoolConfig(JedisPoolConfig poolConfig) { + this.poolConfig = poolConfig; + } } \ No newline at end of file diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundHashOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundHashOperations.java index d7eb1e9ef..f55ed85be 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundHashOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundHashOperations.java @@ -36,7 +36,7 @@ class DefaultBoundHashOperations extends DefaultKeyBound implement */ public DefaultBoundHashOperations(H key, RedisOperations operations) { super(key); - this.ops = operations.getHashOps(); + this.ops = operations.opsForHash(); } @Override diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundListOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundListOperations.java index ca13ab5e0..df302ad11 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundListOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundListOperations.java @@ -36,7 +36,7 @@ class DefaultBoundListOperations extends DefaultKeyBound implements Bou */ public DefaultBoundListOperations(K key, RedisOperations operations) { super(key); - this.ops = operations.getListOps(); + this.ops = operations.opsForList(); } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundSetOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundSetOperations.java index 66affbbd7..ffae21d6f 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundSetOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/DefaultBoundSetOperations.java @@ -37,7 +37,7 @@ class DefaultBoundSetOperations extends DefaultKeyBound implements Boun */ DefaultBoundSetOperations(K key, RedisOperations operations) { super(key); - this.ops = operations.getSetOps(); + this.ops = operations.opsForSet(); } @Override 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 867b0fec4..7d0b2322f 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 @@ -32,7 +32,7 @@ class DefaultBoundValueOperations extends DefaultKeyBound implements Bo */ public DefaultBoundValueOperations(K key, RedisOperations operations) { super(key); - this.ops = operations.getValueOps(); + this.ops = operations.opsForValue(); } @Override 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 9a00d1a75..00443f515 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 @@ -36,7 +36,7 @@ class DefaultBoundZSetOperations extends DefaultKeyBound implements Bou */ public DefaultBoundZSetOperations(K key, RedisOperations oeprations) { super(key); - this.ops = oeprations.getZSetOps(); + this.ops = oeprations.opsForZSet(); } @Override diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisOperations.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisOperations.java index 06ff3d420..7d1c5b47f 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisOperations.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/core/RedisOperations.java @@ -96,7 +96,7 @@ public interface RedisOperations { * * @return value operations */ - ValueOperations getValueOps(); + ValueOperations opsForValue(); /** * Returns the operations performed on simple values (or Strings in Redis terminology) @@ -112,7 +112,7 @@ public interface RedisOperations { * * @return list operations */ - ListOperations getListOps(); + ListOperations opsForList(); /** * Returns the operations performed on list values bound to the given key. @@ -127,7 +127,7 @@ public interface RedisOperations { * * @return set operations */ - SetOperations getSetOps(); + SetOperations opsForSet(); /** * Returns the operations performed on set values bound to the given key. @@ -142,7 +142,7 @@ public interface RedisOperations { * * @return zset operations */ - ZSetOperations getZSetOps(); + ZSetOperations opsForZSet(); /** * Returns the operations performed on zset values (also known as sorted sets) @@ -160,7 +160,7 @@ public interface RedisOperations { * @param hash value type * @return hash operations */ - HashOperations getHashOps(); + HashOperations opsForHash(); /** * Returns the operations performed on hash values bound to the given key. 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 8b083554b..1aa1a41c3 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 @@ -697,7 +697,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation } @Override - public ValueOperations getValueOps() { + public ValueOperations opsForValue() { return valueOps; } @@ -914,7 +914,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation } @Override - public ListOperations getListOps() { + public ListOperations opsForList() { return listOps; } @@ -1158,7 +1158,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation } @Override - public SetOperations getSetOps() { + public SetOperations opsForSet() { return setOps; } @@ -1353,7 +1353,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation } @Override - public ZSetOperations getZSetOps() { + public ZSetOperations opsForZSet() { return zSetOps; } @@ -1572,7 +1572,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperation } @Override - public HashOperations getHashOps() { + public HashOperations opsForHash() { return new DefaultHashOperations(); } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicInteger.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicInteger.java index dbeb8ece1..77274a16a 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicInteger.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicInteger.java @@ -47,7 +47,7 @@ public class RedisAtomicInteger extends Number implements Serializable, KeyBound */ public RedisAtomicInteger(String redisCounter, RedisOperations operations) { this.key = redisCounter; - this.operations = operations.getValueOps(); + this.operations = operations.opsForValue(); this.generalOps = operations; if (this.operations.get(redisCounter) == null) { set(0); @@ -63,7 +63,7 @@ public class RedisAtomicInteger extends Number implements Serializable, KeyBound */ public RedisAtomicInteger(String redisCounter, RedisOperations operations, int initialValue) { this.key = redisCounter; - this.operations = operations.getValueOps(); + this.operations = operations.opsForValue(); this.generalOps = operations; this.operations.set(redisCounter, initialValue); } diff --git a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicLong.java b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicLong.java index 94c7daa84..c3d5083b4 100644 --- a/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicLong.java +++ b/spring-data-redis/src/main/java/org/springframework/data/keyvalue/redis/support/atomic/RedisAtomicLong.java @@ -47,7 +47,7 @@ public class RedisAtomicLong extends Number implements Serializable, KeyBound operations) { this.key = redisCounter; - this.operations = operations.getValueOps(); + this.operations = operations.opsForValue(); this.generalOps = operations; if (this.operations.get(redisCounter) == null) { set(0); @@ -63,7 +63,7 @@ public class RedisAtomicLong extends Number implements Serializable, KeyBound operations, long initialValue) { this.key = redisCounter; - this.operations = operations.getValueOps(); + this.operations = operations.opsForValue(); this.operations.set(redisCounter, initialValue); }