将一个java对象中的数据放入到redis缓存中、
@SpringBootTest
class SpringBoot06JdbcApplicationTests {
@Autowired
private RedisTemplate redisTemplate; //操作k-v都是对象的
@Autowired
private RedisTemplate MyRedisTemplate;
@Test
void test2(){
Role role = new Role(1,"1515","小明",1,new Date(),2,new Date());
ValueOperations valueOperations = redisTemplate.opsForValue();
valueOperations.set("role", role);
}
}
上面这个会出现一个问题
这个不是乱码问题、而是序列化数据的编码不一样
需要改变的就是改变RedisTemplate类
的默认序列化格式、
写一个redis的配置类将要加载新的序列化放入到RedisTemplate属性中
主要这个地方
@Configuration
public class MyRedis {
@Bean
public RedisTemplate<Object, Object> MyRedisTemplate(RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
// 设置其他的k-v的默认的序列化
template.setDefaultSerializer(new Jackson2JsonRedisSerializer(Object.class));
//单独设置k的序列化
template.setKeySerializer(new StringRedisSerializer());
return template;
}
}
重新测试
@SpringBootTest
class SpringBoot06JdbcApplicationTests {
@Autowired
private RedisTemplate redisTemplate; //操作k-v都是对象的
@Autowired
private RedisTemplate MyRedisTemplate; // 这个是redis配置类中配置的类
@Test
void test2(){
Role role = new Role(1,"1515","小明",1,new Date(),2,new Date());
// redis配置类中配置的类
ValueOperations valueOperations = MyRedisTemplate.opsForValue();
valueOperations.set("role", role);
}
}
private RedisTemplate MyRedisTemplate;
:这个是配置类中配置的类、里面设置类序列化类型
可视化软件上的查询效果
小结:
- 这个不是乱码问题是数据的序列化问题
- 我们只需要重新配置一个新的类、将新的序列化放入到RedisTemplate的属性中