阅读量:5
Redis维持session状态
Redis
Redis是什么
Redis是一个开源的、内存中的数据结构存储系统,可以用作数据库、缓存和消息代理。它支持多种数据类型,包括字符串、哈希、列表、集合和有序集合。由于它是内存级别的数据库,因此读写的速度很快。这里用来存放session最为合适。
Redis安装
Redis的使用
- Linux平台(Ubuntu20.04)
启动方法:
sudo systemctl status redis-server
- Windows平台
redis-server
时实交互:
redis-cli
另外vscode还开发了一款插件用来可视化展示redis,直接在插件市场里面搜索Redis就可以得到:
应用搭建
使用redis维持session状态
//创建Redis数据库连接 const RedisStore = connectRedis(session) // const redisClient = redis.createClient({ host: 'localhost', port: 6379 }) //定义Session中间件 app.use(session({ store: new RedisStore({ client: redisClient }), secret: 'secret$%^134', resave: false, saveUninitialized: false, cookie: { secure: false, // if true only transmit cookie over https httpOnly: false, // if true prevent client side JS from reading the cookie maxAge: 1000 * 60 * 10 // session max age in miliseconds } }))
将/路径下GET请求querystring中带有的参数及其缓存在session中
app.get("/", (req, res) => { const sess = req.session; //将请求保存在session中 if (req.query) { for (let key in req.query) { sess[key] = req.query[key]; } } if (sess.username && sess.password) { if (sess.username) { res.write(`<h1>Welcome ${sess.username} </h1><br>`) res.write( `<h3>This is the Home page</h3>` ); res.end('<a href=' + '/logout' + '>Click here to log out</a >') } } else { res.sendFile(__dirname + "/login.html") } });
访问/路径时,以json形式将session中缓存的参数内容打印到前台页面
app.get("/", (req, res) => { const sess = req.session; //将请求保存在session中 if (req.query) { for (let key in req.query) { sess[key] = req.query[key]; } } //将session数据以JSON格式输出 const sessionJSON = JSON.stringify(sess); if (sess.username && sess.password) { if (sess.username) { res.write(`<h1>Welcome ${sess.username} </h1><br>`) res.write( `<h3>This is the Home page</h3>` ); res.write( `<p>Session Data: ${sessionJSON}</p>`) res.end('<a href=' + '/logout' + '>Click here to log out</a >') } } else { res.sendFile(__dirname + "/login.html") } });
注:上述开发实现了前后端分离,交互使用的是Ajax。