node koa-session 用redis存储session

参考  https://www.npmjs.com/package/koa-session2

1 安装 

npm install koa-session2

2 app.js

const Koa = require('koa');
const app = new Koa();
const session = require('koa-session2');
const Store = require('./redis-store');
const config = {
    redis: {
      port: 6379,
      host: 'localhost',
      family: 4,
      password: '123456',
      db: 0
   },
}

app.use(session({
    store: new Store(config.redis),
    maxAge:1*60*60*1000
}));

 redis-store.js

const Redis = require("ioredis");
const { Store } = require("koa-session2");

class RedisStore extends Store {
    constructor(redisConfig) {
        super();
        this.redis = new Redis(redisConfig);
    }

    async get(sid, ctx) {
        let data = await this.redis.get(`SESSION:${sid}`);
        return JSON.parse(data);
    }

    async set(session, { sid =  this.getID(24), maxAge = 1000000 } = {}, ctx) {
        try {
            // Use redis set EX to automatically drop expired sessions
            await this.redis.set(`SESSION:${sid}`, JSON.stringify(session), 'EX', maxAge / 1000);
        } catch (e) {}
        return sid;
    }

    async destroy(sid, ctx) {
        return await this.redis.del(`SESSION:${sid}`);
    }
}

module.exports = RedisStore;

 

你可能感兴趣的:(nodejs,redis)