1、导包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
图片.png2、查看redis的自动配置类:RedisAutoConfiguration
自动配置文件:RedisProperties
图片.png
问题:
- 默认的ReidisTemplate设置的是JDK的序列化方式。
- 默认的两个泛型都是Object,我们使用需要强制转换<String,Object>
RedisTemplate<Object, Object> ——>RedisTemplate<String, Object>
3、自定义redisTemplate
配置连接:
spring:
redis:
host: 129.204.213.64
port: 6379 #默认的就是6379,可以不需要配置这一项
@Configuration
public class RedisConfig {
//固定模板
//自定义自己的redisTemplate
@Bean
public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){
//为了开发方便直接使用<String,Object>
RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
//设置序列化方式为jackson的序列化方式
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.setKeySerializer(jackson2JsonRedisSerializer);
//string的序列化
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
//key采用string的序列化方式
redisTemplate.setKeySerializer(stringRedisSerializer);
//hash的key采用string的序列化方式
redisTemplate.setHashKeySerializer(stringRedisSerializer);
//value采用Jackson的序列化方式
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
//hash的value采用Jackson的序列化方式
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
网友评论