| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package com.yiidata.intergration.common.cache;
- import com.fasterxml.jackson.annotation.JsonAutoDetect;
- import com.fasterxml.jackson.annotation.PropertyAccessor;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.data.redis.connection.RedisConnectionFactory;
- import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
- import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
- import org.springframework.data.redis.serializer.RedisSerializer;
- import org.springframework.data.redis.serializer.StringRedisSerializer;
- /**
- * <pre>
- *
- * Created by zhenqin.
- * User: zhenqin
- * Date: 2025/1/21
- * Time: 15:33
- * Vendor: yiidata.com
- *
- * </pre>
- *
- * @author zhenqin
- */
- @Slf4j
- @Configuration
- @ConditionalOnProperty(name = "cache.type", havingValue = "redis", matchIfMissing = false)
- public class RedisConfig {
- @Bean
- public RedisConnectionFactory redisConnectionFactory(ICache cache) {
- Redised redised = (Redised) cache;
- RedisStandaloneConfiguration clusterConfiguration = new RedisStandaloneConfiguration();
- clusterConfiguration.setHostName(redised.getHost());
- clusterConfiguration.setPort(redised.getPort());
- clusterConfiguration.setPassword(redised.getPassword());
- clusterConfiguration.setDatabase(redised.getDb());
- JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(clusterConfiguration);
- log.info("init redis JedisConnectionFactory...");
- return jedisConnectionFactory;
- }
- /**
- * RedisTemplate配置
- * @param jedisConnectionFactory
- * @return
- */
- @Bean
- public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory jedisConnectionFactory) {
- log.info(" --- redis config init --- ");
- Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = jacksonSerializer();
- RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
- redisTemplate.setConnectionFactory(jedisConnectionFactory);
- RedisSerializer<String> stringSerializer = new StringRedisSerializer();
- // key序列化
- redisTemplate.setKeySerializer(stringSerializer);
- // value序列化
- redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
- // Hash key序列化
- redisTemplate.setHashKeySerializer(stringSerializer);
- // Hash value序列化
- redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
- redisTemplate.afterPropertiesSet();
- return redisTemplate;
- }
- private Jackson2JsonRedisSerializer jacksonSerializer() {
- Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
- ObjectMapper objectMapper = new ObjectMapper();
- objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
- objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
- jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
- return jackson2JsonRedisSerializer;
- }
- }
|