一、需求描述
從自己當前負責參與開發的一個項目中來看,redis主要的應用場景有如下幾個,第一個是保存用戶信息,這個需要頻繁的獲取。比如
在打開某一個頁面進行查詢時,就先需要獲取用戶信息,看用戶是否具有查詢權限;第二個應用場景是,當數據庫查詢比較慢時,也會使
用到redis緩存,第一次查詢可能會比較慢,就將結果緩存在redis中,當第二次進行訪問時就快多了;第三個應用場景是使用字典表進行翻
譯某些字段的值,將字典表進行放在redis中進行存儲;第四個應用場景是,當查詢用戶的權限時,將所有用戶對應的權限信息放在redis中
進行存儲。
二、需求分析
將某些數據信息存儲在redis中的一個主要目前就是便於程序在需要使用這些數據信息時,能夠快速取用,而不用再去數據庫中進行查詢,
降低程序運行效率。特別是對於一些需要高頻率調用的信息,如用戶信息,權限信息等等,這些信息就非常適合存儲在redis中,提供接口供
程序調用。
三、解決方案
現在項目中使用redis的地方,前面兩個是別人已經做好的了。后面兩個是自己在開發過程中添加進去的,自己也在不斷地學習,不斷地
進步。下圖是根據請求對象獲取用戶信息的部分代碼,統一封裝RedisService接口,提供給程序調用。目前項目一切運行良好,查詢效率也提
升了不少。不斷地學習,不斷地總結,不斷地進步,每天學習一小點,每天進步一點點。
/**
* Function :
* Author : csdn_
* Version : V2.1.0
* Date : 2020-01-13 14:17:00
* Description : 獲取登錄用戶
* Return :
* History : Nothing
*/
@Override
@Transactional(readOnly = true)
public UserInfoOutVo getCurUser(HttpServletRequest request) {
String sessionId = CookieUtils.getSessionId(request);
if (StringUtils.isEmpty(sessionId)) {
return null;
}
UserInfoOutVo user = this.getCurUser(sessionId);
return user;
}