我有一个返回复杂对象的方法,例如下面的示例(有时会有更多的深层对象):
public class MyUser implements Serializable {
private Long id;
private String name;
private Integer age;
}
我在服务类中创建了这些方法:
@Cacheable
public MyUser getUser(Long id) {
return myRepository.findById(id);
}
@Cacheable
public String getUserAsString(Long id) {
return new Gson().toJson(myRepository.findById(id));
}
我的控制器调用此服务并返回JSON。
在我的缓存中存储字符串值比在存储复杂对象时更有效吗?
我认为,每当命中缓存时,仅对字符串值进行反序列化的速度要比对复杂对象进行反序列化的速度更快,并且不需要存储有关哪个类与JSON值中使用的复杂属性相关联的信息。
注意:
我正在使用Spring Boot + Redis。 我正在使用Jackson2JsonRedisSerializer反序列化值。 此方法将被调用多次。 控制器使用“ getUser”,将通过resonseBody使用杰克逊将对象转换为JSON 使用“ getUserAsString”的控制器仅需指示结果为JSON,因为该值为JSON。