node+express+redis的簡單應用(將Session存放到Redis中)

近期在倒騰redis,雖然簡單,但是還是記錄下,防止以後忘記

環境:node+express+redis

一、安裝redis需要用到的模塊(此處省略node和express環境的構建)

cnpm install redis --save
cnpm install connect-redis --save
cnpm install express-session --save
cnpm install cookie-parser --save

二、增加代碼如下

const cookieParser = require('cookie-parser');
app.use(cookieParser());

const expressSession = require('express-session');
const redis = require('redis');
const RedisStore = require('connect-redis')(expressSession);
// 創建Redis客戶端
const redisClient = redis.createClient(
    6379, 
    '127.0.0.1',
     // {auth_pass: 'password'}
 );
// 設置Express的Session存儲中間件
app.use(
    expressSession(
        {
            store:new RedisStore({client: redisClient}),
            secret:'password',
            resave:false, 
            saveUninitialized:false,
            cookie:{
              maxAge: 1000*60*5 // default session expiration is set to 1 hour
            }
        }
    ),
    
);

三、使用(直接給出兩個接口,一個存儲另一個讀取。模仿用戶登錄,和判斷用戶是否爲登錄狀態)

app.get('/set',(req,res)=>{
    let name = req.query.name
    if(!name || name==''){
        res.send('name is require');  
        return;      
    }
    //比如傳了name='zs'此時會在redis裏面存入zs:{name:'zs',login:true}
    req.session[name] = {name, login:true};
    res.send('login success Welcome to Server');
});



app.get('/get',(req,res)=>{
    let name = req.query.name
    if(!name || name==''){
        res.send('name is require');
        return;        
    }   
    let session = req.session;
    console.log(session)//session裏面包含了存儲的所有內容
    if(session[name] && session[name].login){
        res.send('Welcome to Server');
    }else{
        res.send('no login');
    }
  
})

這樣你的Session就轉移到了Redis數據庫,這樣做的一個額外好處是,當你的Express服務器突然重啓後,用戶仍然可以使用當前Cookie中的SessionID從數據庫中獲取到他的會話狀態,做到會話不丟失,在一定程度上提高網站的鍵壯性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章