![JAR search and dependency download from the Maven repository](/logo.png)
com.github.bootfastconfig.cache.redis.RedissonConfiguration Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of boot-fast-config-cache Show documentation
Show all versions of boot-fast-config-cache Show documentation
Parent pom providing dependency and plugin management for applications
built with Maven
The newest version!
package com.github.bootfastconfig.cache.redis;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.github.bootfastconfig.cache.properties.RedissonProperties;
import com.github.bootfastconfig.springtool.StringUtil;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.codec.JsonJacksonCodec;
import org.redisson.config.Config;
import org.redisson.config.SingleServerConfig;
import org.redisson.spring.data.connection.RedissonConnectionFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.LocalDateTime;
import java.util.Optional;
@Configuration
@ConditionalOnClass(value = {RedissonClient.class, RedissonConnectionFactory.class})
public class RedissonConfiguration {
private final RedisProperties properties;
private final RedissonProperties redissonProperties;
RedissonConfiguration(RedisProperties properties, RedissonProperties redissonProperties) {
this.properties = properties;
this.redissonProperties = redissonProperties;
}
@Bean(destroyMethod = "shutdown")
@ConditionalOnMissingBean(RedissonClient.class)
public RedissonClient redissonClientResources() {
Config config = new Config();
SingleServerConfig singleServerConfig = config.useSingleServer();
Optional.ofNullable(properties.getTimeout())
.map(o -> Long.valueOf(o.toMillis()))
.filter(o -> o > 0).ifPresent(o -> singleServerConfig.setTimeout(o.intValue()));
if (redissonProperties.getPool() != null) {
Optional.ofNullable(redissonProperties.getPool().getMaxIdle())
.filter(o -> o > 0)
.ifPresent(o -> singleServerConfig.setConnectionMinimumIdleSize(o));
Optional.ofNullable(redissonProperties.getPool().getMaxActive())
.filter(o -> o > 0)
.ifPresent(o -> singleServerConfig.setConnectionPoolSize(o));
Optional.ofNullable(redissonProperties.getPool().getMaxWait())
.map(o -> Long.valueOf(o.toMillis()))
.filter(o -> o > 0)
.ifPresent(o -> singleServerConfig.setIdleConnectionTimeout(o.intValue()));
}
singleServerConfig.setAddress("redis://" + properties.getHost() + ":" + properties.getPort());
if (StringUtil.isNotBlank(properties.getPassword())) {
singleServerConfig.setPassword(properties.getPassword());
}
singleServerConfig.setDatabase(properties.getDatabase());
ObjectMapper mapper = new ObjectMapper();
JavaTimeModule timeModule = new JavaTimeModule();
timeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer());
timeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer());
mapper.registerModule(timeModule);
JsonJacksonCodec jsonJacksonCodec = new JsonJacksonCodec(mapper);
config.setCodec(jsonJacksonCodec);
return Redisson.create(config);
}
@Bean
@ConditionalOnBean(RedissonClient.class)
public RedissonConnectionFactory redisConnectionFactory(RedissonClient redissonClient) {
RedissonConnectionFactory redissonConnectionFactory = new RedissonConnectionFactory(redissonClient);
return redissonConnectionFactory;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy