Browse Source

RedisTbTransactionalCache refactored to make doGet using the rawKey and the Redis connection precalculated slot based on hash

pull/10584/head
Sergey Matvienko 2 years ago
parent
commit
034b480a6c
  1. 6
      common/cache/src/main/java/org/thingsboard/server/cache/RedisTbTransactionalCache.java

6
common/cache/src/main/java/org/thingsboard/server/cache/RedisTbTransactionalCache.java

@ -78,7 +78,7 @@ public abstract class RedisTbTransactionalCache<K extends Serializable, V extend
public TbCacheValueWrapper<V> get(K key) { public TbCacheValueWrapper<V> get(K key) {
try (var connection = connectionFactory.getConnection()) { try (var connection = connectionFactory.getConnection()) {
byte[] rawKey = getRawKey(key); byte[] rawKey = getRawKey(key);
byte[] rawValue = connection.stringCommands().get(rawKey); byte[] rawValue = doGet(connection, rawKey);
if (rawValue == null) { if (rawValue == null) {
return null; return null;
} else if (Arrays.equals(rawValue, BINARY_NULL_VALUE)) { } else if (Arrays.equals(rawValue, BINARY_NULL_VALUE)) {
@ -95,6 +95,10 @@ public abstract class RedisTbTransactionalCache<K extends Serializable, V extend
} }
} }
protected byte[] doGet(RedisConnection connection, byte[] rawKey) {
return connection.stringCommands().get(rawKey);
}
@Override @Override
public void put(K key, V value) { public void put(K key, V value) {
try (var connection = connectionFactory.getConnection()) { try (var connection = connectionFactory.getConnection()) {

Loading…
Cancel
Save