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不存在的話,就跳轉使用者到登入頁面
........