本次目標
使用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;
}
暫未實現的功能
- 修改商品商品對緩存的更新。
- 對緩存商品的超時續租。