本次目标
使用Redis集群实现商品缓存。在实际项目中,对于频繁从数据库获取的热门商品放入缓存,比如Redis或者其它第三方缓存应用,可以极大减少数据库的访问压力。
实现过程
在数据库中,增加商品是否缓存的字段。
在后台商品管理中,添加是否缓存的选项:
在添加商品的逻辑中,加入缓存机制:
try {
articleMapper.addArticle(article);
//添加成功后,对信息进行缓存
if(article.getIfCache()==1){
String articleJson = objectMapper.writeValueAsString(article);
redisTemplate.opsForValue().set("shopId" + article.getId(),articleJson);
}
return SysResult.ok();
}catch (Exception e){
e.printStackTrace();
}
在获取商品的代码中,首先判断Redis缓存中是否有改商品,如果有就从缓存获取,如果没有就从数据库获取:
try {
String shopJson=redisTemplate.opsForValue().get("shopId" + id);
Article article;
if(null!=shopJson){//如果缓存中有数据,直接从缓存中读取
article = objectMapper.readValue(shopJson, Article.class);
}else{
article=articleMapper.getArticleById(id);
}
sysResult.setStatus(200);
sysResult.setData(article);
return sysResult;
}catch (Exception e){
sysResult.setStatus(500);
return sysResult;
}
暂未实现的功能
- 修改商品商品对缓存的更新。
- 对缓存商品的超时续租。