urn
*/
@Override
public List<EmperorVo> getEmperorListByDynastyId(Integer dynastyId) {
// 判断Redis是否存在该结果
String key = "getEmperorListByDynastyId_" + String.valueOf(dynastyId);
if (redisUtil.hasKey(key)) {
List<EmperorVo> emperorVoList = (List<EmperorVo>) redisUtil.get(key);
System.out.println("由Redis得到" + key + "结果");
// 日志记录
log.info(new Date() + " 由Redis得到" + key + "数据");
return emperorVoList;
}
QueryWrapper<Emperor> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("dynasty_id", dynastyId);
List<Emperor> emperorList = emperorMapper.selectList(queryWrapper);
List<EmperorVo> emperorVoList = new LinkedList<>();
String nastyName = dynastyMapper.selectById(dynastyId).getName();
for (Emperor emperor : emperorList) {
EmperorVo emperorVo = new EmperorVo();
BeanUtils.copyProperties(emperor, emperorVo);
emperorVo.setDynastyName(nastyName);
emperorVo.calculateTime();
emperorVoList.add(emperorVo);
}
System.out.println("由MySQL得到" + key + "结果");
// 日志记录
log.info(new Date() + " 由MySQL得到" + key + "数据");
if (redisUtil.set(key, emperorVoList, 600)) {
System.out.println("Redis已存入" + key + "数据");
// 日志记录
log.info(new Date() + " Redis已存入" + key + "数据");
}
return emperorVoList;
}
}
以“getEmperorListByDynastyId(Integer dynastyId)”方法为例,该方法是根据dynastyId获得List
对象,首先会根据方法名及dynastyId在Redis数据库中查找,若存在则直接返回,否则从MySQL数据库中读取,并将结果存入Redis数据库中然后返回。使用log.info()记录数据库读取过程,该记录会存储于info.log文件中
该网站后台的info.log日志记录如下
[00:54:31:770] [INFO] - cn.huskysir.Service.Impl.EmperorServiceImpl.getEmperorListByDynastyId(EmperorServiceImpl.java:141) - Wed Sep 20 00:54:31 CST 2023 由MySQL得到getEmperorListByDynastyId_1数据
[00:54:31:773] [INFO] - cn.huskysir.Service.Impl.EmperorServiceImpl.getEmperorListByDynastyId(EmperorServiceImpl.java:145) - Wed Sep 20 00:54:31 CST 2023 Redis已存入getEmperorListByDynastyId_1数据
[00:54:35:853] [INFO] - cn.huskysir.Service.Impl.EmperorServiceImpl.getEmperorListByDynastyId(EmperorServiceImpl.java:141) - Wed Sep 20 00:54:35 CST 2023 由MySQL得到getEmperorListByDynastyId_2数据
[00:54:35:863] [INFO] - cn.huskysir.Service.Impl.EmperorServiceImpl.getEmperorListByDynastyId(EmperorServiceImpl.java:145) - Wed Sep 20 00:54:35 CST 2023 Redis已存入getEmperorListByDynastyId_2数据
[00:54:37:363] [INFO] - cn.huskysir.Service.Impl.EmperorServiceImpl.getEmperorListByDynastyId(EmperorServiceImpl.java:123) - Wed Sep 20 00:54:37 CST 2023 由Redis得到getEmperorListByDynastyId_1数据
[00:54:38:043] [INFO] - cn.huskysir.Service.Impl.EmperorServiceImpl.getEmperorListByDynastyId(EmperorServiceImpl.java:123) - Wed Sep 20 00:54:38 CST 2023 由Redis得到getEmperorListByDynastyId_2数据
[00:54:39:214] [INFO] - cn.huskysir.Service.Impl.EmperorServiceImpl.getEmperorListByDynastyId(EmperorServiceImpl.java:123) - Wed Sep 20 00:54:39 CST 2023 由Redis得到getEmperorListByDynastyId_1数据
[00:54:39:936] [INFO] - cn.huskysir.Service.Impl.EmperorServiceImpl.getEmperorListByDynastyId(EmperorServiceImpl.java:123) - Wed Sep 20 00:54:39 CST 2023 由Redis得到getEmperorListByDynastyId_2数据
四、总结
关于SpringBoot项目配置Redis与log4j2是查询官方文档以及他人博客得到