package com.springboot.template.beanconfig; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.stereotype.Component; @Component public class RedisConfig{ @Value("${spring.redis.host}") private String redisHost; @Value("${spring.redis.port}") private int redisPort; @Value("${spring.redis.timeout}") private int redisTimeout; @Value("${spring.redis.password}") private String redisAuth; @Value("${spring.redis.database}") private int redisDb; @Value("${spring.redis.jedis.pool.max-active}") private int maxActive; @Value("${spring.redis.jedis.pool.max-wait}") private int maxWait; @Value("${spring.redis.jedis.pool.max-idle}") private int maxIdle; @Value("${spring.redis.jedis.pool.min-idle}") private int minIdle; /** * 1.注解bean标注的方法参数,会被扫描是否存在已经自动注入的bean * 2.注解bean的返回对象会被自动注入到容器中 * @param redisConnectionFactory * @return */ @Bean public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { /*//连接池配置 JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxTotal(maxActive); poolConfig.setMaxIdle(maxIdle); poolConfig.setMaxWaitMillis(maxWait); poolConfig.setMinIdle(minIdle); poolConfig.setTestOnBorrow(true); poolConfig.setTestOnReturn(false); poolConfig.setTestWhileIdle(true); JedisClientConfiguration clientConfig = JedisClientConfiguration.builder() .usePooling().poolConfig(poolConfig).and().readTimeout(Duration.ofMillis(redisTimeout)).build(); // 单点redis RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration(); // 哨兵redis // RedisSentinelConfiguration redisConfig = new RedisSentinelConfiguration(); // 集群redis // RedisClusterConfiguration redisConfig = new RedisClusterConfiguration(); redisConfig.setHostName(redisHost); redisConfig.setPassword(RedisPassword.of(redisAuth)); redisConfig.setPort(redisPort); redisConfig.setDatabase(redisDb); RedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(redisConfig,clientConfig); */ /* * JSON数据序列化处理 //ObjectMapper ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); //jackjson Jackson2JsonRedisSerializer jackson = new Jackson2JsonRedisSerializer(Object.class); jackson.setObjectMapper(objectMapper); */ //RESTTemplate RedisTemplate restTemplate = new RedisTemplate(); restTemplate.setValueSerializer(new StringRedisSerializer()); restTemplate.setKeySerializer(new StringRedisSerializer()); restTemplate.setConnectionFactory(redisConnectionFactory); restTemplate.afterPropertiesSet(); return restTemplate; } }