feat(user): 引入本地缓存优化用户信息查询性能

- 添加 Caffeine 依赖并配置本地缓存
- 实现用户信息多级缓存:本地缓存 -> Redis -> 数据库
- 新增用户信息缓存KEY常量及构建方法
- 配置自定义线程池用于异步缓存操作
- 实现缓存空对象防止击穿与过期时间随机化
- 添加 JsonUtils 工具类解析 JSON 字符串为对象的方法
This commit is contained in:
Hanserwei
2025-10-08 20:29:54 +08:00
parent fcdbda4c56
commit ae9720b7cb
6 changed files with 136 additions and 1 deletions

View File

@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import lombok.SneakyThrows;
import org.apache.commons.lang3.StringUtils;
public class JsonUtils {
private static ObjectMapper OBJECT_MAPPER = new ObjectMapper();
@@ -33,4 +34,21 @@ public class JsonUtils {
public static String toJsonString(Object obj) {
return OBJECT_MAPPER.writeValueAsString(obj);
}
/**
* 将 JSON 字符串转换为对象
*
* @param jsonStr JSON 字符串
* @param clazz 目标对象类型
* @return 目标对象
* @param <T> 目标对象类型
*/
@SneakyThrows
public static <T> T parseObject(String jsonStr, Class<T> clazz) {
if (StringUtils.isBlank(jsonStr)) {
return null;
}
return OBJECT_MAPPER.readValue(jsonStr, clazz);
}
}