node.js使用redis儲存session(詳細步驟)

#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
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$REDIS_CLI -p $REDISPORT SHUTDOWN
while [ -x ${PIDFILE} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
restart|force-reload)
${0} stop
${0} start
;;
*)
echo "Usage: /etc/init.d/redis {start|stop|restart|force-reload}" >&2
exit 1
esac
node.js使用redis儲存session(詳細步驟)

這裡的pidfile 在redis.conf配置文件中有

如下圖

node.js使用redis儲存session(詳細步驟)

然後添加開機啟動服務

vim /etc/rc.local

進入文件後在末尾添加

service redis start

保存退出

node.js使用redis儲存session(詳細步驟)

然後設置權限

chmod 755 /etc/init.d/redis

設置完成後註冊系統服務

chkconfig --add redis

然後測試一下redis能否啟動

進入redis文件夾後

輸入

service redis start

node.js使用redis儲存session(詳細步驟)

啟動成功後我們看一下redis是否配置成功

ps -ef|grep redis

node.js使用redis儲存session(詳細步驟)

沒有問題就可以創建軟連接了

ln -s /usr/local/src/redis-4.0.11/src/redis-cli /usr/bin/redis

測試redis

軟連接創建完直接在命令行輸入

redis即可

node.js使用redis儲存session(詳細步驟)

這裡要輸入你在配置文件中設置的密碼

到這裡redis就安裝完成了

配置防火牆

在上面的配置完成後我們還不能正常使用

還需要對防火牆進行配置

我們先查看一下端口的情況

netstat -lntp

node.js使用redis儲存session(詳細步驟)

我們可以看到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"
重新安裝一下依賴
cnpm i
這裡由於npm比較慢所以我用的cnpm
然後就可以在代碼中使用了

先看一下原本沒用redis的代碼
我用express-session來保存用戶狀態
node.js使用redis儲存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(詳細步驟)



分享到:


相關文章: