Spring Boot 2关于Redis的使用2
这里主要采用自定义方式来操作Redis
自定义序列化
- 默认采用JDK的序列化方式,可能不满足我们的要求,比如说包名变动等导致反序列化报错
- 实现接口org.springframework.data.redis.serializer.RedisSerializer
- 系统自带org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer
- 自定义JSON序列化,主要包名的问题,泛型反序列化问题
<T> T deserialize(byte[] source, Class<T> type);
<T> T deserialize(byte[] source, JavaType javaType);
<T> T deserialize(byte[] source, ParameterizedType parameterizedType);
<T> T deserialize(byte[] source, TypeReference<T> typeReference);
解析配置文件
可以在application.yml中配置,也可以在properties文件中配置
@Component
@ConfigurationProperties(prefix = "redis-config")
public class RedisProperties implements Serializable {
private static final long serialVersionUID = 1071156375336358075L;
private String host = Protocol.DEFAULT_HOST;
private int port = Protocol.DEFAULT_PORT;
private int timeout = Protocol.DEFAULT_TIMEOUT;
private Long expireTime = 604800L;
private int maxIdle = 8;
private int maxTotal = 8;
private long maxWaitMillis = 1000L;
private Boolean testOnBorrow = true;
}
构造JedisPoolConfig等信息
@Bean
public JedisPoolConfig getJedisPoolConfig() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(this.redisProperties.getMaxIdle());
jedisPoolConfig.setMaxTotal(this.redisProperties.getMaxTotal());
jedisPoolConfig.setMaxWaitMillis(this.redisProperties.getMaxWaitMillis());
jedisPoolConfig.setTestOnBorrow(this.redisProperties.getTestOnBorrow());
return jedisPoolConfig;
}
@Bean
public Pool<Jedis> getJedisPool(JedisPoolConfig jedisPoolConfig) {
return new JedisPool(jedisPoolConfig, this.redisProperties.getHost(), this.redisProperties.getPort(), this.redisProperties.getTimeout());
}
构造缓存工具类
@Component
public class RedisCacheUtil {
private Logger logger = LoggerFactory.getLogger(RedisCacheUtil.class);
private RedisJackson2JsonRedisSerializer redisSerializer = new RedisJackson2JsonRedisSerializer();
@Autowired
private Pool<Jedis> jedisPool;
@Autowired
private RedisProperties redisProperties;
}
通过Jedis提供的方法可以操作Redis的所有功能
源码位置
https://gitee.com/ceclar123/spring-boot-demo/tree/master/ch02