redis 03. 连接koa-session和redis nodejs
安装koa-session
yarn add koa-session
配置koa-session redis
const session = require(‘koa-session‘); const Redis = require(‘ioredis‘); const redis = new Redis(); // 配置koa-session server.keys = [‘dev secret key‘]; const CONFIG = { key: ‘ig‘, store: new RedisSessionStore(redis) }; server.use(session(CONFIG, server)); // 设置session router.get(‘/set/user‘, async ctx => { ctx.session.user = { name: ‘js‘, age: 29 }; ctx.body = ‘success‘; }); server.use(router.routes());
koa-session store的配置
// 连接redis的一些方法 /** * 返回实际使用的redis模块名 * @param {*} sid key */ function getSessionId(sid) { return `ssid:${sid}`; } class RedisSessionStore { constructor(client) { // 传入一个redis实例 this.client = client; } /** * 从redis获取session数据 * @param {*} sid key */ async get(sid) { console.log(‘get sid‘,sid) const id = getSessionId(sid); const data = await this.client.get(id); if (!data) { return null; } try { const result = JSON.parse(data); return result; } catch (err) { console.error(err); } } /** * 存入session数据到redis * @param {*} sid key * @param {*} sess value * @param {*} ttl 过期时间 */ async set(sid, sess, ttl) { console.log(‘set sid‘,sid) const id = getSessionId(sid); if (typeof ttl === ‘number‘) { ttl = Math.ceil(ttl / 1000); } try { const sessStr = JSON.stringify(sess); if (ttl) { await this.client.setex(id, ttl, sessStr); } else { await this.client.set(id, sessStr); } } catch (err) { console.error(err); } } /** * 从redis删除session数据 * @param {*} sid key */ async destroy(sid) { const id= getSessionId(sid); await this.client.del(id) } } module.exports = RedisSessionStore
以上。
相关推荐
鲁氏汤包王 2020-06-08
houmenghu 2020-11-17
我心似明月 2020-11-09
oraclemch 2020-11-06
ltd00 2020-09-12
康慧欣 2020-09-10
waveclouds 2020-09-04
蓝色深海 2020-09-15
jincheng 2020-09-01
思君夜未眠 2020-08-25
取个好名字真难 2020-08-06
歆萌 2020-08-03
阳光之吻 2020-08-03
婷婷小屋 2020-07-28
solarspot 2020-07-28
MLXY 2020-07-26
dxbjfu0 2020-07-26
songbinxu 2020-07-19
83520298 2020-07-06