
com.redis.spring.batch.util.ConnectionUtils Maven / Gradle / Ivy
The newest version!
package com.redis.spring.batch.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.function.Supplier;
import org.springframework.util.FileCopyUtils;
import com.redis.lettucemod.RedisModulesClient;
import com.redis.lettucemod.api.StatefulRedisModulesConnection;
import com.redis.lettucemod.cluster.RedisModulesClusterClient;
import com.redis.lettucemod.cluster.api.StatefulRedisModulesClusterConnection;
import io.lettuce.core.AbstractRedisClient;
import io.lettuce.core.ReadFrom;
import io.lettuce.core.api.StatefulConnection;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.api.sync.RedisScriptingCommands;
import io.lettuce.core.cluster.api.StatefulRedisClusterConnection;
import io.lettuce.core.codec.RedisCodec;
public abstract class ConnectionUtils {
private ConnectionUtils() {
}
public static Supplier> supplier(AbstractRedisClient client) {
return supplier(client, CodecUtils.STRING_CODEC);
}
public static Supplier> supplier(AbstractRedisClient client, ReadFrom readFrom) {
return supplier(client, CodecUtils.STRING_CODEC, readFrom);
}
public static Supplier> supplier(AbstractRedisClient client,
RedisCodec codec) {
return supplier(client, codec, null);
}
public static Supplier> supplier(AbstractRedisClient client, RedisCodec codec,
ReadFrom readFrom) {
if (client instanceof RedisModulesClusterClient) {
return () -> connection((RedisModulesClusterClient) client, codec, readFrom);
}
return () -> connection((RedisModulesClient) client, codec);
}
public static StatefulRedisModulesConnection connection(AbstractRedisClient client,
RedisCodec codec, ReadFrom readFrom) {
if (client instanceof RedisModulesClusterClient) {
return connection((RedisModulesClusterClient) client, codec, readFrom);
}
return connection((RedisModulesClient) client, codec);
}
public static StatefulRedisModulesConnection connection(RedisModulesClient client,
RedisCodec codec) {
return client.connect(codec);
}
public static StatefulRedisModulesConnection connection(RedisModulesClusterClient client,
RedisCodec codec, ReadFrom readFrom) {
StatefulRedisModulesClusterConnection connection = client.connect(codec);
if (readFrom != null) {
connection.setReadFrom(readFrom);
}
return connection;
}
@SuppressWarnings("unchecked")
public static T sync(StatefulConnection connection) {
if (connection instanceof StatefulRedisClusterConnection) {
return (T) ((StatefulRedisClusterConnection) connection).sync();
}
return (T) ((StatefulRedisConnection) connection).sync();
}
@SuppressWarnings("unchecked")
public static T async(StatefulConnection connection) {
if (connection instanceof StatefulRedisClusterConnection) {
return (T) ((StatefulRedisClusterConnection) connection).async();
}
return (T) ((StatefulRedisConnection) connection).async();
}
@SuppressWarnings("unchecked")
public static String loadScript(AbstractRedisClient client, String filename) throws IOException {
byte[] bytes;
try (InputStream inputStream = ConnectionUtils.class.getClassLoader().getResourceAsStream(filename)) {
bytes = FileCopyUtils.copyToByteArray(inputStream);
}
try (StatefulConnection connection = supplier(client, CodecUtils.STRING_CODEC).get()) {
return ((RedisScriptingCommands) sync(connection)).scriptLoad(bytes);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy