CNode

nodejs 多进程 Session 共享问题探讨

Xxiexinze发布于13 年前最后回复9 年前12 回复16314 浏览0 收藏

nodejs 用 cluster 模块实现多进程 启动,刚开始 心喜

if (cluster.isMaster) { var numCPUs = require('os').cpus().length; var data = 0; // 启动多个进程. for (var i = 0; i < numCPUs; i++) { //增加一个进程 var worker_process = cluster.fork(); //侦听子进程的message事件 worker_process.on('message', function(msg) { if (msg.cmd && msg.cmd == 'notifyRequest') { data++; console.log('DATA VALUE : %d ', data);
} }); } } else { process.send({ cmd: 'notifyRequest' }); http.createServer(app).listen(app.get('port'), function () { console.log("Web server listening on port " + app.get('port')); }); }

多进程起动 参考官网代码

因为 Session 无法 在多进程 之间共享的问题,造成系统Session登录后台无法 共享

后台经过 google baidu 终于 找到了解决办法

把 Session 用 redis 来存储

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

app.use(express.session({
    secret:'xxz',
    store:new RedisStore(),
    key:'express.sid'
}));

最后终于搞定希望对大家有所帮助 哈哈

查看回复

回复 (12)

G
gengdaoping#1·11 年前

两个不同的app.js之间怎么用redis啊

N
njaulj#2·11 年前
引用 gengdaoping两个不同的app.js之间怎么用redis啊

@gengdaoping 只要配好redis就可以用啦 connect-redis

L
luckydrq#3·11 年前

redis是不错的多进程共享方案。其实如果session信息不多的话也可以考虑记cookie 自豪地采用 CNodeJS ionic

G
gengdaoping#4·11 年前

@njaulj为什么配置到最后req.session为undefined

X
xiaowu#5·13 年前

请问怎么使用sqlserver保存session

B
bshy522#6·13 年前

额。。

Y
youxiachai#7·13 年前

嗯...

代码样式..
Y
youxiachai#8·13 年前

有代码的话用 ``` 包围吧

X
xiexinze#9·13 年前
引用 xiaowu请问怎么使用sqlserver保存session

不好意思,我没有那个环境,没有用过!!

G
gagahjt#10·13 年前

共享的话肯定需要持久存储.. npm 上面很多.. mongo 存储 (npm mongo-session) 可以试试..

F
fuweijunya#11·13 年前

具体例子可以看这里 https://github.com/rajaraodv/redispubsub

O
onlyone1221#12·9 年前

mark

参与回复
登录后即可参与回复。登录