node.js中結合Redis實現session
這里的session機制很簡單,用戶登錄之后,給用戶生成一個session,包含用戶的唯一編號ID,過期時間expires,以及用戶的用戶的sessionID。
創建了session之后,將session存放到redis數據庫中,現在也只是測試了可以存放數據,并沒有進行redis的進一步操作,今后將對 redis進行集群操作,雖然小,但是一定要五臟俱全,會寫兩個類,一個專門用來寫,針對主庫,然后另一個專門用來讀,針對從庫。
這需要一個key值與redis從庫的連接地址相關聯,因為當存在多個key值時,讀取是隨機的,但是想想,又覺得沒有必要,因為主庫對從庫是完全同步的,就是主庫的數據會拷貝完整的一份到從庫,先這樣想著吧。
redis主要是用到了redis這個模塊,模塊很多的方法,現在只記錄一下用到的:
/**
* @description 存儲hash結構的數據,同時設置數據的過期時間
* @param {string} 鍵的名稱
* @param {json} 對應的值
* @returns {undefined}
*/
exports.hmset = function (key, json, expires) {
try {
console.log("--hmset function begin--");
client.hmset(key, json);
if (expires) {
client.expire(key,expires);
}
else {
client.expire(key,60 * 30);
}
}
catch (err) {
console.log("lalalla:"+err);
}
} 存值的時候要注意參數的格式,注意redis的錯誤提示,可以很快的定位問題
還有就是注意異步的特點,比如這里,雖然頁面的代碼在redis操作之后,但是頁面重跳轉之后,redis的操作才執行了。
頁面跳轉之后設置cache保存sessionID,然后當頁面跳轉的時候,通過讀取redis看看sessionID是否存在,來判斷用戶信息是否過期,沒有的話,就更新一下redis的過期時間,因為redis中設置了過期時間,所以sessionID不存在的話,就跳轉用戶到登錄頁面
本文由用戶 x286 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!