package com.mes.common.config;
|
|
|
import com.mes.common.utils.FastJsonRedisSerializer;
|
import org.springframework.cache.CacheManager;
|
import org.springframework.cache.annotation.EnableCaching;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
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.core.RedisTemplate;
|
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
|
import org.springframework.data.redis.serializer.RedisSerializationContext;
|
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
|
/**
|
* @Author : zhoush
|
* @Date: 2024/4/9 19:13
|
* @Description:
|
*/
|
@Configuration
|
@EnableCaching
|
public class RedisConfig {
|
|
@Bean
|
@SuppressWarnings(value = {"unchecked", "rawtypes"})
|
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
|
RedisTemplate<Object, Object> template = new RedisTemplate<>();
|
template.setConnectionFactory(connectionFactory);
|
|
FastJsonRedisSerializer serializer = new FastJsonRedisSerializer(Object.class);
|
|
// 使用StringRedisSerializer来序列化和反序列化redis的key值
|
template.setKeySerializer(new StringRedisSerializer());
|
template.setValueSerializer(serializer);
|
|
// Hash的key也采用StringRedisSerializer的序列化方式
|
template.setHashKeySerializer(new StringRedisSerializer());
|
template.setHashValueSerializer(serializer);
|
|
template.afterPropertiesSet();
|
return template;
|
}
|
|
|
@Bean
|
public CacheManager cacheManager(RedisConnectionFactory factory) {
|
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
|
.disableCachingNullValues()
|
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
|
|
RedisCacheManager redisCacheManager = RedisCacheManager.builder(factory)
|
.cacheDefaults(redisCacheConfiguration)
|
.build();
|
|
return redisCacheManager;
|
}
|
}
|