Springboot上传json格式数据到redis
Why: 为什么使用json格式上传到reids?
Becaues: redisTmeplate默认使用的是jdk序列化机制将对象序列化,这样会把数据以序列化的形式存储到redis中,在redis中不好查看数据内容。
这里有两种方法上传json格式数据:
- 1.可以使用json转换工具 fastjson jackson。
- 2.自定义序列化规则自己将对象转化为json (使用这个)
前提:有commons-net和mybatis-plus依赖,application.properties配置数据源和redis相关配置:
可以看:简单整合redis
这里我们使用第二种:
创建实体类:User
public class User implements Serializable {
private Integer id;
private String name;
private String password;
}
创建一个配置类:将自定义RedisTemplate规则
@Configuration
public class MyRedisConfig {
@Bean
public RedisTemplate<Object, User> redisTemplate(
RedisConnectionFactory redisConnectionFactory
){
RedisTemplate<Object, User> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer<User> ser = new Jackson2JsonRedisSerializer<User>(User.class);
redisTemplate.setDefaultSerializer(ser);
return redisTemplate;
}
}
springboot测试环境中运行:
@SpringBootTest
class Springboot211RedisApplicationTests {
//操作k-v都是对象对象的
@Autowired
private RedisTemplate redisTemplate;
//自定义RedisTemplate
@Autowired
private RedisTemplate<Object,User> userRedisTemplate;
/**
*opsForValue() 操作字符串的
* opsForList() 操作列表的
* opsForSet() 操作集合的
* opsForHash() 操作散列的
* opsForZset() 操作有序集合的
*/
@Test
void test02() {
User user = new User(1, "yang0", "123");
//使用jdk序列化机制将对象序列化 保存到redis中
//redisTemplate.opsForValue().set("user-01",user);
//一般我们都以json的方式保存数据
//1.可以使用json转换工具 fastjson jackson。
//2.自己将对象转化为json (使用这个)
//userRedisTemplate 改变默认的序列化规则
userRedisTemplate.opsForValue().set("user-02",user);
}
}
使用默认规则效果:
使用自定义规则之后效果: