Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 是否可以在NodeJ中存储循环引用对象?_Node.js_Scale_Circular Reference - Fatal编程技术网

Node.js 是否可以在NodeJ中存储循环引用对象?

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,

我想跨所有服务器扩展传入请求

我可以在集群中使用declare全局变量将所有传入请求存储在数组中

  //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连接?因此,声明一个全局范围的变量并重用它。有什么问题吗?