DATAREDIS-1034 - Polishing.
Pre-allocate operations objects for immutable serializationContext in ReactiveRedisTemplate. Original pull request: #479.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user