node.js中結合redis實現session

來源:互聯網
上載者:User

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

 

........

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.