com.infusers.core.cache.redis.RedisConfig Maven / Gradle / Ivy
package com.infusers.core.cache.redis;
import java.time.Duration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ResourceLoader;
import org.springframework.data.redis.cache.CacheKeyPrefix;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
@Configuration
@EnableCaching
@ConditionalOnProperty(name = "redis.hostname")
public class RedisConfig {
@Value("${redis.hostname}")
private String redisHostName;
@Value("${redis.port}")
private int redisPort;
@Value("${redis.prefix}")
private String redisPrefix;
private static final Duration expiration = Duration.ofMinutes(60);
@Bean(name = "jedisConnectionFactory")
JedisConnectionFactory jedisConnectionFactory() {
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(redisHostName, redisPort);
return new JedisConnectionFactory(redisStandaloneConfiguration);
}
@Bean(value = "redisTemplate")
public RedisTemplate redisTemplate() {
final RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
//redisTemplate.setHashValueSerializer(new GenericToStringSerializer(String.class));
redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer());
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration(this.redisHostName, this.redisPort);
JedisClientConfiguration jedisClientConfiguration = JedisClientConfiguration.builder().build();
JedisConnectionFactory factory = new JedisConnectionFactory(configuration, jedisClientConfiguration);
factory.afterPropertiesSet();
redisTemplate.setConnectionFactory(factory);
return redisTemplate;
}
@Bean(name = "cacheManager")
public RedisCacheManager cacheManager(
RedisConnectionFactory redisConnectionFactory,
ResourceLoader resourceLoader,
ObjectMapper objectMapper) {
RedisSerializer
© 2015 - 2025 Weber Informatics LLC | Privacy Policy