propertites配置redis
spring.redis.database=1
spring.redis.host=106.14.9.199
spring.redis.port=16379
spring.redis.password=tc123456
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.timeout=0
配置文件:
一、
import com.huashui.sys.advice.GlobalControllerAdvice; import groovy.util.logging.Slf4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * @Author: * @Date: */ @Configuration @EnableCaching @ConfigurationProperties(prefix="spring.redis") public class JedisConfiguration extends CachingConfigurerSupport { private static final Logger logger = LoggerFactory.getLogger(GlobalControllerAdvice.class); @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port; @Value("${spring.redis.timeout}") private int timeout; @Value("${spring.redis.pool.max-idle}") private int maxIdle; @Value("${spring.redis.pool.max-wait}") private long maxWaitMillis; @Value("${spring.redis.password}") private String password; @Value("${spring.redis.pool.max-active}") private int maxTotal; @Bean public JedisPool redisPoolFactory() { logger.info("JedisPool注入成功!!"); logger.info("redis地址:" + host + ":" + port); // getJedisConfiguration(); JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(maxIdle); jedisPoolConfig.setMaxWaitMillis(maxWaitMillis); //最大连接数, 默认8个 jedisPoolConfig.setMaxTotal(maxTotal); JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, password); return jedisPool; } }
二、
import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; 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; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * @Author: * @Date: */ @Configuration @EnableAutoConfiguration public class RedisConfig { // 使用工厂初始化redis操作模板 @Bean public RedisTemplate<?, ?> getRedisTemplate(JedisConnectionFactory jedisConnectionFactory) { RedisTemplate<String, String> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(jedisConnectionFactory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); // key序列化方式,但是如果方法上有Long等非String类型的话,会报类型转换错误 // Long类型不可以会出现异常信息; redisTemplate.setKeySerializer(new StringRedisSerializer()); // redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; } // @Bean // public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { // RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); // redisTemplate.setConnectionFactory(redisConnectionFactory); //// JdkSerializationRedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer(); // GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer(); // // 设置值(value)的序列化采用FastJsonRedisSerializer。 // redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); //// redisTemplate.setHashValueSerializer(fastJsonRedisSerializer); // // 设置键(key)的序列化采用StringRedisSerializer。 // redisTemplate.setKeySerializer(new StringRedisSerializer()); // redisTemplate.setHashKeySerializer(new StringRedisSerializer()); // redisTemplate.afterPropertiesSet(); // return redisTemplate; // } @Value("${spring.redis.database}") private int index; @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port; @Value("${spring.redis.timeout}") private int timeout; @Value("${spring.redis.pool.max-idle}") private int maxIdle; @Value("${spring.redis.pool.max-wait}") private long maxWaitMillis; @Value("${spring.redis.password}") private String password; @Bean public Jedis jedis(){ Jedis jedis = new Jedis(host,port); if(StringUtils.isNotBlank(password)){ jedis.auth(password); } jedis.select(index); return jedis; } }
登录是把token放到缓存中
redisTemplate.opsForValue().set(token + "_user", sysUser, 2, TimeUnit.HOURS);
redisTemplate.opsForValue().set(token + "_area", area, 2, TimeUnit.HOURS);
//该用于标会系统
jedis.setex(token + "_userId", 7200,sysUser.getId());
jedis.setex(token + "_areaId", 7200,area.getId());
jedis.setex(token + "_gov_code", 7200,sysUser.getGovCode());
String areaCode = sysUser.getGovCode().split("_")[1];
SysArea aa = sysAreaService.getSysAreaByAreaCode(areaCode, sysUser.getGovCode());
redisTemplate.opsForValue().set(sysUser.getGovCode(), aa, 10, TimeUnit.DAYS);