DATAREDIS-1034 - Polishing.

Pre-allocate operations objects for immutable serializationContext in ReactiveRedisTemplate.

Original pull request: #479.
This commit is contained in:
Mark Paluch
2019-09-25 10:25:17 +02:00
parent 2c0e87a612
commit 3889369710

View File

@@ -65,6 +65,13 @@ public class ReactiveRedisTemplate<K, V> implements ReactiveRedisOperations<K, V
private final RedisSerializationContext<K, V> serializationContext;
private final boolean exposeConnection;
private final ReactiveScriptExecutor<K> reactiveScriptExecutor;
private final ReactiveGeoOperations<K, V> geoOps;
private final ReactiveHashOperations<K, ?, ?> hashOps;
private final ReactiveHyperLogLogOperations<K, V> hllOps;
private final ReactiveListOperations<K, V> listOps;
private final ReactiveSetOperations<K, V> setOps;
private final ReactiveValueOperations<K, V> valueOps;
private final ReactiveZSetOperations<K, V> zsetOps;
/**
* Creates new {@link ReactiveRedisTemplate} using given {@link ReactiveRedisConnectionFactory} and
@@ -96,6 +103,14 @@ public class ReactiveRedisTemplate<K, V> implements ReactiveRedisOperations<K, V
this.serializationContext = serializationContext;
this.exposeConnection = exposeConnection;
this.reactiveScriptExecutor = new DefaultReactiveScriptExecutor<>(connectionFactory, serializationContext);
this.geoOps = opsForGeo(serializationContext);
this.hashOps = opsForHash(serializationContext);
this.hllOps = opsForHyperLogLog(serializationContext);
this.listOps = opsForList(serializationContext);
this.setOps = opsForSet(serializationContext);
this.valueOps = opsForValue(serializationContext);
this.zsetOps = opsForZSet(serializationContext);
}
/**
@@ -350,7 +365,7 @@ public class ReactiveRedisTemplate<K, V> implements ReactiveRedisOperations<K, V
return createFlux(connection -> connection.keyCommands() //
.mDel(Flux.from(keys).map(this::rawKey).buffer(128)) //
.map(CommandResponse::getOutput)) //
.collect(Collectors.summingLong(value -> value));
.collect(Collectors.summingLong(value -> value));
}
/*
@@ -385,7 +400,7 @@ public class ReactiveRedisTemplate<K, V> implements ReactiveRedisOperations<K, V
return createFlux(connection -> connection.keyCommands() //
.mUnlink(Flux.from(keys).map(this::rawKey).buffer(128)) //
.map(CommandResponse::getOutput)) //
.collect(Collectors.summingLong(value -> value));
.collect(Collectors.summingLong(value -> value));
}
/*
@@ -537,7 +552,7 @@ public class ReactiveRedisTemplate<K, V> implements ReactiveRedisOperations<K, V
*/
@Override
public ReactiveGeoOperations<K, V> opsForGeo() {
return opsForGeo(serializationContext);
return geoOps;
}
/*
@@ -554,8 +569,9 @@ public class ReactiveRedisTemplate<K, V> implements ReactiveRedisOperations<K, V
* @see org.springframework.data.redis.core.ReactiveRedisOperations#opsForHash()
*/
@Override
@SuppressWarnings("unchecked")
public <HK, HV> ReactiveHashOperations<K, HK, HV> opsForHash() {
return opsForHash(serializationContext);
return (ReactiveHashOperations<K, HK, HV>) hashOps;
}
/*
@@ -574,7 +590,7 @@ public class ReactiveRedisTemplate<K, V> implements ReactiveRedisOperations<K, V
*/
@Override
public ReactiveHyperLogLogOperations<K, V> opsForHyperLogLog() {
return opsForHyperLogLog(serializationContext);
return hllOps;
}
/*
@@ -593,7 +609,7 @@ public class ReactiveRedisTemplate<K, V> implements ReactiveRedisOperations<K, V
*/
@Override
public ReactiveListOperations<K, V> opsForList() {
return opsForList(serializationContext);
return listOps;
}
/*
@@ -611,7 +627,7 @@ public class ReactiveRedisTemplate<K, V> implements ReactiveRedisOperations<K, V
*/
@Override
public ReactiveSetOperations<K, V> opsForSet() {
return opsForSet(serializationContext);
return setOps;
}
/*
@@ -629,7 +645,7 @@ public class ReactiveRedisTemplate<K, V> implements ReactiveRedisOperations<K, V
*/
@Override
public ReactiveValueOperations<K, V> opsForValue() {
return opsForValue(serializationContext);
return valueOps;
}
/*
@@ -647,7 +663,7 @@ public class ReactiveRedisTemplate<K, V> implements ReactiveRedisOperations<K, V
*/
@Override
public ReactiveZSetOperations<K, V> opsForZSet() {
return opsForZSet(serializationContext);
return zsetOps;
}
/*