- 对于缓存实现业务阐明:
- 1. 应该查问缓存
- 2. 判断缓存中是否有数据 *
- 3. 如果没有数据, 则查询数据库
- 4. 如果有数据, 则间接返回数据.
- 思考: redis 中次要操作的类型是 String 类型, 业务数据如何于 String 进行交互!!!!! * 实现思路: 业务数据
~ JSON~ String
设计 API:
办法 1: 将任意的对象转化为 JSON.
办法 2: 将任意的 JSON 串转化为对象.
要求实现异样的解决
public class ObjectMapperUtil{
//1. 定义常量对象:劣势 1:对象独一份,节俭空间
劣势 2:对象不容许他人随便篡改
private static final ObjectMapper Mapper = new ObjectMapper();
//1. 任意对象转换为 Json
public static String toJson(Object object){
try {if(object==null){throw new RuntimeException("传递的参数 object 为 null,请认真查看");
}
return Mapper.writeValueAsString(object);
} catch (JsonProcessingException e) {e.printStackTrace();
// 应该将查看异样,转化为运行时异样
throw new RuntimeException("传递的对象不反对 json 转化 / 查看是否有 get/set 办法");
}
}
//2. 将任意 Json 转换为对象,传递什么类型转化什么对象
public static <T> T toObject(String json,Class<T> target) {
// 判断字符串的 API
if (StringUtils.isEmpty(json) || target == null) {throw new RuntimeException("传递的参数不能为 null");
}
try {return Mapper.readValue(json, target);
} catch (JsonProcessingException e) {e.printStackTrace();
throw new RuntimeException("json 转换异样");
}
}
}
service 中的实现步骤:
- 步骤: * 先查问 Redis 缓存 K:V
-
- true 间接返回数据
-
- false 查询数据库 *
-
- KEY 有什么特点: 1.key 应该动态变化 2.key 应该标识业务属性 * key=ITEM_CAT_PARENTID::parentId