DATAKV-26

+ add String connection to RedisTemplate
This commit is contained in:
Costin Leau
2011-01-27 20:14:44 +02:00
parent be70393efb
commit 3f013df426
3 changed files with 24 additions and 4 deletions

View File

@@ -45,7 +45,6 @@ public class DefaultStringRedisConnection implements StringRedisConnection {
*/
public DefaultStringRedisConnection(RedisConnection connection) {
Assert.notNull(connection, "connection is required");
Assert.notNull(connection, "serializer is required");
this.delegate = connection;
this.serializer = new StringRedisSerializer();
}

View File

@@ -160,13 +160,14 @@ public class RedisTemplate<K, V> extends RedisAccessor implements RedisOperation
RedisConnectionFactory factory = getConnectionFactory();
RedisConnection conn = RedisConnectionUtils.getConnection(factory);
boolean existingConnection = TransactionSynchronizationManager.hasResource(factory);
preProcessConnection(conn, existingConnection);
boolean pipelineStatus = conn.isPipelined();
if (pipeline && !pipelineStatus) {
conn.openPipeline();
}
boolean existingConnection = TransactionSynchronizationManager.hasResource(factory);
try {
RedisConnection connToExpose = (exposeConnection ? conn : createRedisConnectionProxy(conn));
T result = action.doInRedis(connToExpose);
@@ -189,6 +190,15 @@ public class RedisTemplate<K, V> extends RedisAccessor implements RedisOperation
new CloseSuppressingInvocationHandler(pm));
}
/**
* Processes the connection (before any settings are executed on it). Default implementation returns the connection as is.
*
* @param connection redis connection
*/
protected RedisConnection preProcessConnection(RedisConnection connection, boolean existingConnection) {
return connection;
}
protected <T> T postProcessResult(T result, RedisConnection conn, boolean existingConnection) {
return result;
}

View File

@@ -15,7 +15,10 @@
*/
package org.springframework.data.keyvalue.redis.core;
import org.springframework.data.keyvalue.redis.connection.DefaultStringRedisConnection;
import org.springframework.data.keyvalue.redis.connection.RedisConnection;
import org.springframework.data.keyvalue.redis.connection.RedisConnectionFactory;
import org.springframework.data.keyvalue.redis.connection.StringRedisConnection;
import org.springframework.data.keyvalue.redis.serializer.RedisSerializer;
import org.springframework.data.keyvalue.redis.serializer.StringRedisSerializer;
@@ -24,6 +27,9 @@ import org.springframework.data.keyvalue.redis.serializer.StringRedisSerializer;
* this class provides a dedicated class that minimizes configuration of its more generic
* {@link RedisTemplate template} especially in terms of serializers.
*
* <p/> Note that this template exposes the {@link RedisConnection} used by the {@link RedisCallback}
* as a {@link StringRedisConnection}.
*
* @author Costin Leau
*/
public class StringRedisTemplate extends RedisTemplate<String, String> {
@@ -52,4 +58,9 @@ public class StringRedisTemplate extends RedisTemplate<String, String> {
setHashKeySerializer(stringSerializer);
setHashValueSerializer(stringSerializer);
}
}
@Override
protected RedisConnection preProcessConnection(RedisConnection connection, boolean existingConnection) {
return new DefaultStringRedisConnection(connection);
}
}