我们在平常做的最多的就是数据库数据的查询,但是在很多情况下,数据库的一些数据信息的固定定时更新的。这样我们就可以将这部分数据放入缓存,加快数据的访问速度。同时我们可以设置数据的过期时间来定时查询数据库,然后将数据缓存的缓存中间件。
这时候我们可以写一个工具类,来处理不同的数据库查询方法。
Supplier<List<testInfoPO>> fun = () -> aaaService.selectaaaInfo(params);
List<testInfoPO> XXXPOList = redisService.getRedisContent(fun, key,
new TypeToken<List<testInfoPO>>(){}.getType());
public <T> T getRedisContent(Supplier<T> func, String keys, Type type){
// 先尝试从缓存获取信息
String result = redisCache.get(keys, String.class);
if (StringUtils.isNotBlank(result)) {
T redis = GsonUtils.fromJson(result,type);
if (redis != null){
logger.info("get data from redis: {}", GsonUtils.toJsonString(redis).toString());
return redis;
}
}
T results = func.get();
redisCache.put(keys, GsonUtils.toJsonString(results), CacheSeconds);
return results;
}