templates.redisConfig.ftl Maven / Gradle / Ivy
package ${cfg.packageConfig};
import ${cfg.packageRedis}.RedisProperties;
import ${cfg.packageRedis}.RedisCache;
import ${cfg.packageRedis}.RedisConfiguration;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisPassword;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfig {
@ConfigurationProperties(prefix = "spring.redis")
@Bean
public RedisProperties redisProperties() {
return new RedisProperties();
}
@Bean
public GenericObjectPoolConfig genericObjectPoolConfig(RedisProperties redisProperties) {
GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig();
genericObjectPoolConfig.setMaxIdle(redisProperties.getLettuce().getPool().getMaxIdle());
genericObjectPoolConfig.setMaxTotal(redisProperties.getLettuce().getPool().getMaxActive());
genericObjectPoolConfig.setMaxWaitMillis(redisProperties.getLettuce().getPool().getMaxWait().toMillis());
genericObjectPoolConfig.setMinIdle(redisProperties.getLettuce().getPool().getMinIdle());
return genericObjectPoolConfig;
}
@Bean
public LettuceConnectionFactory lettuceConnectionFactory(RedisProperties redisProperties, GenericObjectPoolConfig genericObjectPoolConfig) {
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
redisStandaloneConfiguration.setHostName(redisProperties.getHost());
redisStandaloneConfiguration.setPort(redisProperties.getPort());
redisStandaloneConfiguration.setDatabase(redisProperties.getDatabase());
redisStandaloneConfiguration.setPassword(RedisPassword.of(redisProperties.getPassword()));
LettuceClientConfiguration lettucePoolingClientConfiguration = LettucePoolingClientConfiguration.builder()
.commandTimeout(redisProperties.getTimeout())
.poolConfig(genericObjectPoolConfig)
.build();
return new LettuceConnectionFactory(redisStandaloneConfiguration, lettucePoolingClientConfiguration);
}
@Bean("lettuceRedisTemplate")
public RedisTemplate
© 2015 - 2024 Weber Informatics LLC | Privacy Policy