Node.js 是否可以在NodeJ中存储循环引用对象?
我想跨所有服务器扩展传入请求 我可以在集群中使用declare全局变量将所有传入请求存储在数组中Node.js 是否可以在NodeJ中存储循环引用对象?,node.js,scale,circular-reference,Node.js,Scale,Circular Reference,我想跨所有服务器扩展传入请求 我可以在集群中使用declare全局变量将所有传入请求存储在数组中 //SERVER 1 var store =[]; //Instance node master http.createServer(function(req,res){ store['InRequest1']=req; }); //Instance node child http.createServer(function(req,
//SERVER 1
var store =[];
//Instance node master
http.createServer(function(req,res){
store['InRequest1']=req;
});
//Instance node child
http.createServer(function(req,res){
var request = store['InRequest1'];
request.write('sss');
});
但是,如果我在另一台服务器上创建另一个实例,我将无法返回存储请求:
//SERVER 2
var request = store['InRequest1'];
request.write('sss');
我找到了使用memcached/redis存储循环对象请求的方法,但是当我尝试
memcached.set(req); //hit error unable convert circular reference objects
要缩放圆形参照对象吗
但是,如果我在另一台服务器上创建另一个实例,我将无法返回存储请求
呃什么?除非您跨服务器同步它们,否则这将无法工作。我换一种说法:猜猜我现在在想的数字!提示:你显然不能
我想跨所有服务器扩展传入请求
你的方法的后半部分是正确的方向。使用数据库跟踪所有服务器上的数据。但每次继续之前,您都必须检查数据库。由于延迟,这最终会导致一些问题
要缩放圆形参照对象吗
我不明白这部分。你能详细说明一下吗?什么循环引用?很抱歉,商店请求示例不清楚。实际上,我希望它是一个会话存储。使用Redis store,我可以扩展我的应用程序?但redis只能存储对象、字符串。。。我可以将循环引用的对象存储在内存中吗?例如,var redistore=require'connect-redis';var Client=Redis.createClient;redistore.StoreClient;变量客户端是内存中的循环对象。与reference objects.redis一样。。。就像我说的,这是一个数据库。数据库中的会话是一种常见的策略。这些与我所说的没有分歧。我不明白为什么要存储链接到请求的客户端。这两者没有很强的相关性。所以将客户端放在Redis中是无效的为什么?实际上我不希望每个新请求都创建新的Redis.createClient。我希望找到其他地方来存储我的Redis连接,我可以在将来重用它。这样我就可以保存连接。所以你想要一种全局Redis连接?因此,声明一个全局范围的变量并重用它。有什么问题吗?