Springboot整合redis
废话不多说,直接开整
1、创建springboot项目,在pom.xml文件中导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
2、创建User实体类,进行序列化
@Component
@Data
//企业中的实体类,都会进行序列化
public class User implements Serializable {
private String name;
private Integer id;
public User(String name, Integer id) {
this.name = name;
this.id = id;
}
public User() {
}
}
3、在config包中创建RedisConfig类,自定义序列化方式,默认序列化方式是jdk序列,采用iso-8859-1编码方式,在redis-cli客户端获取key就会出现“乱码”现象,所以我们采用string方式的序列化,使用utf-8编码方式
@Configuration
@EnableAutoConfiguration
public class RedisConfig {
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
//json序列化配置
Jackson2JsonRedisSerializer<Object> objectJackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,ObjectMapper.DefaultTyping.NON_FINAL);
objectJackson2JsonRedisSerializer.setObjectMapper(om);
//String 序列化配置
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
//key采用String序列化配置
template.setKeySerializer(stringRedisSerializer);
//hash的key也采用string的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
//value采用String的序列化方式
template.setValueSerializer(stringRedisSerializer);
//hash的value也采用json的序列化方式
template.setValueSerializer(objectJackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
4、开始在test类中进行测试
@Autowired
@Qualifier("redisTemplate")
RedisTemplate redisTemplate;
@Test
public void test() throws JsonProcessingException {
User user = new User("zhu",22);
//一般传递的是json数据,并不直接将对象放进去
String jsonUser = new ObjectMapper().writeValueAsString(user);
redisTemplate.opsForValue().set("user",jsonUser);
System.out.println(redisTemplate.opsForValue().get("user"));
}
没有进行序列化:
进行序列化之后: