node.js中結合Redis實現session

x286 10年前發布 | 12K 次閱讀 Redis NoSQL數據庫

        這里的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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!