Javascript NodeJs在进程之间共享对象
我正在为需要使用子进程的多个CPU的NodeJ创建一个缓存模块 我希望将数据存储在主进程中的索引中,或者最好存储在子进程中,例如: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在磁盘上存储内存数据的频
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对象的可写版本。。。。