node.js使用redis储存session的方法
转储session的原因
网上有许多session需要用数据库储存的原因,对我来说原因很简单,仅仅只是node的生产环境不允许将session存到服务器的内存中。会报一个内存溢出的风险警告。所以我决定将session转储到数据库中。而用于存储session的方案有许多,这里由于本人比较菜,所以选择了主流的redis来保存我的session状态
安装redis
既然要使用redis,那么第一步是将redis安装到服务器上,服务器一般都是linux的操作系统。
所以狼蚁网站SEO优化是linux的安装步骤
1.进入官网下载redis
2.将下载好的文件通过xftp上传到服务器并进行安装
这里我将安装包放到了/usr/local/src 的目录下
然后通过xshell来对其进行解压
cd /usr/local/src //进入存放redis的文件 tar -xzvf redis-4.0.11.tar.gz //解压文件
解压完成后进入解压后的文件夹对其进行编译
编译完成后就可以对其进行配置
打开配置文件
vim redis.conf
为了让其在后台运行
需将其修改为守护进程模式
然后给redis设置密码
修改完成按esc退出
wq保存
然后将redis设置为开机启动
新建redis的开机启动脚本
vim /etc/init.d/redis
文件内容如下
#!/bin/sh # chkconfig: 2345 80 90 # description: Start and S redis #PATH=/usr/local/bin:/sbin:/usr/bin:/bin REDISPORT=6379 EXEC=/usr/local/src/redis-4.0.11/src/redis-server REDIS_CLI=/usr/local/src/redis-4.0.11/src/redis-cli PIDFILE=/var/run/redis_6379.pid CONF="/usr/local/src/redis-4.0.11/redis.conf" AUTH="lhy" case "$1" in start) if [ -f $PIDFILE ] then echo "$PIDFILE exists, process is already running or crashed" else echo "Starting Redis server..." $EXEC $CONF fi if [ "$?"="0" ] then echo "Redis is running..." fi ;; s) if [ ! -f $PIDFILE ] then echo "$PIDFILE does not exist, process is not running" else PID=$(cat $PIDFILE) echo "Sping ..." $REDIS_CLI -p $REDISPORT SHUTDOWN while [ -x ${PIDFILE} ] do echo "Waiting for Redis to shutdown ..." sleep 1 done echo "Redis sped" fi ;; restart|force-reload) ${0} s ${0} start ;; ) echo "Usage: /etc/init.d/redis {start|s|restart|force-reload}" >&2 exit 1 esac
这里的pidfile 在redis.conf配置文件中有
如下图
编辑完成后保存退出
然后添加开机启动服务
vim /etc/rc.local
进入文件后在末尾添加
service redis start
保存退出
然后设置权限
chmod 755 /etc/init.d/redis
设置完成后注册系统服务
chkconfig --add redis
然后测试一下redis能否启动
进入redis文件夹后
输入
service redis start
启动成功后我们看一下redis是否配置成功
ps -ef|grep redis
没有问题就可以创建软连接了
ln -s /usr/local/src/redis-4.0.11/src/redis-cli /usr/bin/redis
测试redis
软连接创建完直接在命令行输入
redis即可
这里要输入你在配置文件中设置的密码
到这里redis就安装完成了
配置防火墙
在上面的配置完成后我们还不能正常使用
还需要对防火墙进行配置
我们先查看一下端口的情况
stat -lntp
我们可以看到6379已经被正确监听了
在这里由于我并不会对redis进行什么操作
也不关心它保存的数据,所以我不需要从外网对redis进行访问,因为它只是暂存一下项目的session
所以我这里就不开放防火墙上的端口了
如果需要开放的小伙伴
使用以下命令
firewall-cmd --zone= public --add-port=这里是你想开启的端口 /tcp --permanent (--permanent永久生效,没有此参数重启后失效)
firewall-cmd --reload 重启防火墙
在node中使用redis
redis已经安装完成了
接下来就是在node中使用redis来暂存session了
在package.json中安装
redis模块,connect-redis模块
"redis": "^2.8.0"
"connect-redis":"^3.3.3"
重新安装一下依赖
pm i
这里由于npm比较慢所以我用的pm
然后就可以在代码中使用了
先看一下原本没用redis的代码
我用express-session来保存用户状态
有这一行代码
使用req.session就可以保存用户的一些数据
接下来把刚才的两行代码
session = require('express-session'); app.use(session({secret:'lhy2018'}));
修改为如下代码
session = require('express-session'), redis = require('redis'), client = redis.createClient({password:"lhy"}),//这里填写redis的密码 RedisStore = require('connect-redis')(session); client.on("error", function (err) { console.log("Error " + err);//用于提示错误信息 }); let options = { client:client, port:6379,//端口号 host:"127.0.0.1"//主机 }; app.use(session( { store: new RedisStore(options), secret:"lhy2018"//以此字符串加密 }));
这样使用req.session就可以将你想保存的会话数据存到redis中了
就可以避免内存溢出的风险了
然后用pm2重启服务
以上所述是长沙网络推广给大家介绍的node.js使用redis储存session的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,长沙网络推广会及时回复大家的。在此也非常感谢大家对狼蚁SEO网站的支持!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程