springboot使用redis的方式有三种,前面我说过2种,分别是SpringCache和Spring Data Redis
1.Spring Cache
2. Spring Data Redis
3. Jedis
1.Spring Session 和 Spring Cache
Spring Session 和 Spring Cache 都可以使用Redis作为缓存服务器,并使用默认的序列化政策,即JdkSerializationRedisSerializer .
2. Spring Data Redis
spring Data Redis 提供了两种操作Redis的方法:
- RedisTemplate
- StringRedisTemplate
RedisTemplate采用的是默认的序列化政策,和上面的一样
StringRedisTemplate采用的是StringRedisSerializer
还可以自定义序列化政策,例如使用JSON的序列化方式
//JSON的序列化方式:采用jackson作为默认的序列化方式
@Bean("jsonRedisTemplate")
public RedisTemplate<Object,Object> jsonRedisTemplate(
RedisConnectionFactory redisConnectionFactory)
throws java.rmi.UnknownHostException{
RedisTemplate<Object,Object> template = new RedisTemplate<Object,Object>();
template.setConnectionFactory(redisConnectionFactory);
template.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
return template;
}
或者Redis Template 使用 StringRedisSerializer
//指定Key的序列化策略为StringRedisSerializer
@Bean("strKeyRedisTemplate")
public RedisTemplate<Object,Object> strKeyRedisTemplate(
RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException{
RedisTemplate<Object,Object> template = new RedisTemplate<Object,Object>();
template.setConnectionFactory(redisConnectionFactory);
//在这里,创建了一个名为“strKeyRedisTemplate"的实例,以下代码对key的序列化策略进行了重新设定
RedisSerializer<String> stringSerializer = new StringRedisSerializer();
template.setKeySerializer(stringSerializer);
return template;
}
3. 不同的序列化政策有什么不同
- 默认的序列化 : Key 和 Value 是二进制的,保存在redis种不易阅读
- StringRedisSerializer: Key 和 Value 是键值对类型的,更容易阅读
- JSON的序列化方式 :输出为JSON格式