RedisConfig.java 3.19 KB
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<String, String> 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<String, String> restTemplate = new RedisTemplate<String, String>();
		restTemplate.setValueSerializer(new StringRedisSerializer());
		restTemplate.setKeySerializer(new StringRedisSerializer());
		restTemplate.setConnectionFactory(redisConnectionFactory);
		restTemplate.afterPropertiesSet();
		return restTemplate;
	}
}