问题
传统RedisTemplate进行序列化时会自动存储类对象的路径,为反序列化时作准备。这样占据了内存空间,可以使用StringRedisTemplate优化。
解决方法
// 1.字符串可以直接用
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Test
void testString() {
stringRedisTemplate.opsForValue().set("name","weibai");
Object name3 = stringRedisTemplate.opsForValue().get("name");
System.out.println("name:"+name);
}
// 2.Object用mapper工具
@Autowired
private StringRedisTemplate stringRedisTemplate;
// JSON序列化工具
private static final ObjectMapper mapper = new ObjectMapper();
@Test
void testSaveUser() throws JsonProcessingException {
// 创建对象
User user = new User("weibai", 27);
// 手动序列化
String json = mapper.writeValueAsString(user);
// 写入数据
stringRedisTemplate.opsForValue().set("user:200", json);
// 获取数据
String jsonUser = stringRedisTemplate.opsForValue().get("user:200");
// 手动反序列化
User user1 = mapper.readValue(jsonUser, User.class);
System.out.println("user1 = " + user1);
}