手机版

node.js使用redis存储会话的方法

时间:2021-08-29 来源:互联网 编辑:宝哥软件园 浏览:

转储会话的原因

会话需要存储在互联网数据库中的原因有很多。对我来说,原因很简单,只是节点的生产环境不允许会话存储在服务器的内存中。将报告内存溢出风险警告。所以我决定将会话转储到数据库中。有许多存储会话的方案。因为我在这里比较菜品,所以我选择了主流的redis来保存我的会话状态

安装redis

首先,既然要用redis,那么第一步就是在服务器上安装redis,一般是linux操作系统。

以下是linux的安装步骤

1.进入官网下载redis

2.通过xftp将下载的文件上传到服务器并安装

这里我把安装包放在/usr/local/src目录下

然后通过xshell解压

输入存储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 Stop REDIS # PATH=/usr/local/bin :/usr/bin :/bin :/bin re disort=6379 EXEC=/usr/local/src/REDIS-4 . 0 . 11/src/REDIS-server REDIS _ CLI=/usr/local/src/REDIS-4 . 0 . 11.$EXEC $CONF fi if [ '$?='0' ]然后echo 'Redis正在运行.fi;停止)如果[!-f $PIDFILE ]则回应“$PIDFILE不存在,进程未运行”否则PID=$(cat $PIDFILE)回应“停止”.$ REDIS _ CLI-p $ REDISTORT shut down,同时[ -x ${PIDFILE} ]进行回显“等待REDIS关闭”.睡眠1完成回声' Redis停止' fi;重新启动|强制重新加载)${0}停止${0}启动;*)echo ' usage :/etc/init . d/redis { start | stop | restart | force-reload } ' 2出口1 sac

这里的pidfile在redis.conf配置文件中

下图

编辑后保存并退出

然后添加引导服务

vim /etc/rc.local

输入文件后在末尾添加

服务redis启动

保存退出

然后设置权限

chmod 755 /etc/init.d/redis

设置后注册系统服务

chkconfig -添加redis

然后测试redis是否可以启动

进入redis文件夹后,

投入

服务redis启动

成功启动后,让我们看看redis是否配置成功

ps -ef|grep redis

您可以毫无问题地创建软连接

ln-s/usr/local/src/redis-4 . 0 . 11/src/redis-CLI/usr/bin/redis

测试redis

创建软连接后,直接在命令行输入

Redis没问题

在此输入您在配置文件中设置的密码

Redis安装在这里

配置防火墙

以上配置完成后,我们无法正常使用

您还需要配置防火墙

让我们先检查一下港口

查看所有监听端口

我们可以看到6379已经得到了适当的监控

因为我不会对redis做任何事,

我不关心它保存的数据,所以我不需要从外部网络访问redis,因为它只临时存储项目的会话

所以我不会在这里打开防火墙上的端口

如果你需要一个开放的伙伴,

使用以下命令

firewall-cmd-zone=public-add-port=这是您要打开的端口//tcp - permanent (- permanent永久生效,在重新启动后过期,无需此参数)

防火墙-cmd -重新加载以重新启动防火墙

在节点中使用redis

已安装Redis

下一步是在节点中使用redis来临时存储会话

首先在package.json中安装它

Redis模块,connect-redis模块

redis ' : '^2.8.0''connect-redis':'^3.3.3'

重新安装依赖项

cnpm i

我在这里使用cnpm,因为npm很慢

然后你可以在代码中使用它。首先看看没有使用redis的代码。我使用快速会话来保存用户状态

有这样一行代码

您可以使用req.session保存用户的一些数据

接下来,放上刚才的两行代码

session=require(' express-session ');app . use(session({ secret : ' lhy 2018 ' });修改为以下代码

session=require(' express-session '),redis=require ('redis '),client=redis . create client({ password : ' lhy ' }),//在这里,填写密码redis store=require(' connect-redis ')(session);client.on('error ',function(err){ console . log(' Error ' err);//用于提示错误信息});Letoptions={ client:client,port:6379,//端口号host 3360 ' 127 . 0 . 0 . 1 '//host };use(session({ store : new redis store(options),secret : ' lhy 2018 '//用此字符串加密});通过这种方式,您可以使用req.session保存想要保存在redis中的会话数据

您可以避免内存溢出的风险

然后用pm2重新启动服务

摘要

以上就是边肖介绍的node.js使用redis存储session的方法,希望对大家有所帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

版权声明:node.js使用redis存储会话的方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。