【后端开发实习】Node.js搭建Web应用,用Redis维持session状态

avatar
作者
猴君
阅读量: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。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!