gpt4 book ai didi

node.js - 在 nodejs/expressjs 中使用 RedisStore

转载 作者:IT王子 更新时间:2023-10-29 06:04:41 32 4
gpt4 key购买 nike

我正在尝试访问 express 中的 session 数据,所以我想在配置 express 时尝试声明一个 connect-redis session 存储。但是,我不明白为什么这不起作用:

var express = require('express');
var http = require('http');
var RedisStore = require('connect-redis')(express);

var app = express();
app.set('port', process.env.PORT || 3000);
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({ secret: "keyboard cat", store: new RedisStore }));
//app.use(express.session({ secret: "keyboard cat" }));
app.use(app.router);

app.get('/', function(req, res){
console.log('/');
req.session.items = [ 'apple', 'orange' ];
res.end('items configured');
});

app.get('/items', function(req, res){
console.log('/items: ', req.session.items);
var s = JSON.stringify(req.session.items);
res.end('items: ' + s);
});

var server = http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});

'/' 路由只是用 session 配置项目。

'/items' 路由显示 session 中的项目列表。

它使用标准的 expressjs session 存储。它不能使用 connect-redis(req.session 未定义)

我假设当应用程序加载/卸载时,redis 存储将被实例化和销毁(或者我需要它在 Node/express 应用程序之外运行吗?)

有什么想法吗?

最佳答案

如果 RedisStore 无法连接到您的 Redis 服务器,

req.session 将是未定义的。所以它要么没有运行,要么没有在 RedisStore 寻找它的默认位置 (127.0.0.1:6379) 上运行。

如果是后者,您可以使用 options 配置位置RedisStore 构造函数的参数。

关于node.js - 在 nodejs/expressjs 中使用 RedisStore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244026/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com