RedisConfig.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package com.yiidata.intergration.common.cache;
  2. import com.fasterxml.jackson.annotation.JsonAutoDetect;
  3. import com.fasterxml.jackson.annotation.PropertyAccessor;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. import lombok.extern.slf4j.Slf4j;
  6. import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. import org.springframework.data.redis.connection.RedisConnectionFactory;
  10. import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
  11. import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
  12. import org.springframework.data.redis.core.RedisTemplate;
  13. import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
  14. import org.springframework.data.redis.serializer.RedisSerializer;
  15. import org.springframework.data.redis.serializer.StringRedisSerializer;
  16. /**
  17. * <pre>
  18. *
  19. * Created by zhenqin.
  20. * User: zhenqin
  21. * Date: 2025/1/21
  22. * Time: 15:33
  23. * Vendor: yiidata.com
  24. *
  25. * </pre>
  26. *
  27. * @author zhenqin
  28. */
  29. @Slf4j
  30. @Configuration
  31. @ConditionalOnProperty(name = "cache.type", havingValue = "redis", matchIfMissing = false)
  32. public class RedisConfig {
  33. @Bean
  34. public RedisConnectionFactory redisConnectionFactory(ICache cache) {
  35. Redised redised = (Redised) cache;
  36. RedisStandaloneConfiguration clusterConfiguration = new RedisStandaloneConfiguration();
  37. clusterConfiguration.setHostName(redised.getHost());
  38. clusterConfiguration.setPort(redised.getPort());
  39. clusterConfiguration.setPassword(redised.getPassword());
  40. clusterConfiguration.setDatabase(redised.getDb());
  41. JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(clusterConfiguration);
  42. log.info("init redis JedisConnectionFactory...");
  43. return jedisConnectionFactory;
  44. }
  45. /**
  46. * RedisTemplate配置
  47. * @param jedisConnectionFactory
  48. * @return
  49. */
  50. @Bean
  51. public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory jedisConnectionFactory) {
  52. log.info(" --- redis config init --- ");
  53. Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = jacksonSerializer();
  54. RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
  55. redisTemplate.setConnectionFactory(jedisConnectionFactory);
  56. RedisSerializer<String> stringSerializer = new StringRedisSerializer();
  57. // key序列化
  58. redisTemplate.setKeySerializer(stringSerializer);
  59. // value序列化
  60. redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
  61. // Hash key序列化
  62. redisTemplate.setHashKeySerializer(stringSerializer);
  63. // Hash value序列化
  64. redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
  65. redisTemplate.afterPropertiesSet();
  66. return redisTemplate;
  67. }
  68. private Jackson2JsonRedisSerializer jacksonSerializer() {
  69. Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
  70. ObjectMapper objectMapper = new ObjectMapper();
  71. objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
  72. objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
  73. jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
  74. return jackson2JsonRedisSerializer;
  75. }
  76. }