之前稍微了解过Redis理解Redis的作用,并且对Redis的使用进行了尝试,确实可以提高网站的加载速度,但是当Redis没有工作时,网站就异常了,这里我希望实现的是,当Redis挂了,我的网站仍可以正常运行,无非就是穿透过去,直接读取数据库呗。先上代码:
public List<Address> getfiliale() {
// 定义redis的key
String key = FILIALE_KEY;
// 返回分公司地址
List<Address> addressList = null;
// 定义jackson数据转换操作类
ObjectMapper mapper = new ObjectMapper();
try {
if (!jedisKeys.exists(key)) {
// 若不存在,则从数据库里面取出相应数据
addressList = addressDao.queryAddot();
// 将相关的实体类集合转换成string,存入redis里面对应的key中
String jsonString = null;
try {
jsonString = mapper.writeValueAsString(addressList);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
jedisStrings.set(key, jsonString);
} else {
// 若存在,则直接从redis里面取出相应数据
String jsonString = jedisStrings.get(key);
// 指定要将string转换成的集合类型
JavaType javaType = mapper.getTypeFactory().constructParametricType(ArrayList.class, Address.class);
try {
// 将相关key对应的value里的的string转换成对象的实体类集合
addressList = mapper.readValue(jsonString, javaType);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (Exception e) {
logger.error(e.getMessage());
addressList = addressDao.queryAddot();
}
return addressList;
}
实现原理可以说非常粗暴了,就是当发生异常时,用catch捕获,然后记录报错,再进行正常读取数据库,效果十分扎眼,看下图:
效果大概就是回有很明显的停留时间,那一小段留白时间就是异常捕获的过程
效果十分的粗暴,而且不是很好,暂时我还没有找到合理的解决办法,所以记录一下这样的过程和效果,供参考。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦