Javascript NodeJs在进程之间共享对象

Javascript NodeJs在进程之间共享对象,javascript,node.js,Javascript,Node.js,我正在为需要使用子进程的多个CPU的NodeJ创建一个缓存模块 我希望将数据存储在主进程中的索引中,或者最好存储在子进程中,例如: var index = { key1: 21, key2: 22, key3: 55 } 另一个过程应该能够在该索引中高效搜索: if('key2' in index) // do stuff 我认为使用IPC比实现共享对象要慢得多。这可能吗?谢谢。我会在你的情况下使用redis。有几种方法可以根据保存的条目数或时间()来配置redis在磁盘上存储内存数据的频

我正在为需要使用子进程的多个CPU的NodeJ创建一个缓存模块

我希望将数据存储在主进程中的索引中,或者最好存储在子进程中,例如:

var index = { key1: 21, key2: 22, key3: 55 }
另一个过程应该能够在该索引中高效搜索:

if('key2' in index) // do stuff

我认为使用IPC比实现共享对象要慢得多。这可能吗?谢谢。

我会在你的情况下使用redis。有几种方法可以根据保存的条目数或时间()来配置redis在磁盘上存储内存数据的频率

另一种选择可能是在实例之间发送请求,以便仅在主服务器上保存内存数据

当非主实例想要保存或加载数据时,它将请求主实例

下面是一些伪代码:

var SharedMemory = {
  storeObject: function(args, done) {
    if (IAmMaster()) {
      storeObjectToMemory(args);
      done();
    } else {
      sendRequestToMasterForSave(args, done);
    }
  },
  getObject: function(args, done) {
    if (IAmMaster()) {
      done(getObjectFromMemory(args));
    } else {
      getResponseFromMasterForLoad(args, done);
    }
  }
}
然而,这可能是一个痛苦的过程

您可能想尝试一下。它基于内存映射文件协调共享内存,这意味着数据是持久的,并且在进程之间共享。我这样写是为了避免redis或类似解决方案的性能和管理开销


对于您的应用程序,可能就是您想要的。

为什么不使用redis、memcached甚至节点缓存?具有良好支持的成熟缓存框架。@MattiasÅslund我可以,但这不是本模块的内容:DWWhy the downlovates?@KosmasPapadatos你能找到一个适合你的解决方案吗?我正在寻找人们尝试mmap对象的可写版本。。。。