redis緩存的應用詳解


在現在的很多項目,基本上都需要引入緩存機制,那么緩存到底是什么呢?

緩存  也就是數據交互的緩沖區  Cache 

在java-web項目中實現緩存,也就是需要首先把數據庫需要用到的數據備份一份作為副本,當我們以同樣的url請求的時候,這時候就不需要再次調用查詢數據庫的操作,只需要把提前預存的副本拿出來即可。

這樣的好處也就不言而喻,不僅可以加快執行命令的速度,而且需要用到的流量更少

下面我們通過添加一個大廣告的程序來引入和解析緩存

1 首先在查詢大廣告的時候

try {
//嘗試從Redis中取出數據
String hgetresult = jedisDao.hget(INDEX_CONTENT_REDIS_KEY, contentCategoryId+"");
//判斷字符串是否為空
if (!StringUtils.isBlank(hgetresult)) {
List<TbContent> jsonToList = (List<TbContent>)JsonUtils.jsonToList(hgetresult,TbContent.class);
System.out.println("從緩存中取出首頁信息");
return jsonToList;
}
} catch (Exception e) {
// TODO: handle exception
}

INDEX_CONTENT_REDIS_KEY就是保存在redis中的key,

hget為獲取指定id的緩存數據的方法

 

 

//將數據庫中查詢到的內容存在Redis緩存中
//轉字符串
String json = JsonUtils.objectToJson(list);
try {
jedisDao.hset(INDEX_CONTENT_REDIS_KEY, contentCategoryId+"", json);
System.out.println("存入緩存");
} catch (Exception e) {
// TODO: handle exception
}
return list;

2  在我們真正插入新廣告的時候需要清空舊緩存,這時候代碼如下

HttpClientUtil.doGet(REST_BASE_URL+REST_INDEX_CONTENT_URL+"/"+content.getCategoryId());

這句代碼的主要含義是請求到hdel函數內,清空指定id 的緩存

@Override
public long hdel(String hkey, String key) {
Jedis jedis = jedisPool.getResource();
// TODO Auto-generated method stub
Long hdel = jedis.hdel(hkey, key);

jedis.close();
return hdel;
}

思路連在一塊也就是   

當我們新添加一個數據的時候,這時候舊的緩存已經過時了,直接清空需要更新的緩存,添加完成回到查詢界面,根據緩存是否為空來判斷是否需要更新緩存,如果為空,則更新最新緩存

這樣像廣告這種消耗大量流量並且需要重復請求的,只需要請求本地緩存就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM