我想在两个单独的进程之间共享内存。任何人都可以建议我在节点j中使用的最佳模块。我想以json格式保存数据并在两个进程之间共享。我正在使用shm -typed-array模块,但由于资源较少,我无法解决问题。
这是代码:
Parent.js:-------------------
"use strict";
const shm = require('shm-typed-array');
const fork = require('child_process').fork;
// Create shared memory
const SIZE = 20000000;
const data = shm.create(SIZE, 'Float64Array');
// Fill with dummy data
Array.prototype.fill.call(data, 1);
// Spawn child, set up communication, and give shared memory
const child = fork("child.js");
child.on('message', sum => {
console.log(`Got answer: ${sum}`);
// Demo only; ideally you'd re-use the same child
child.kill();
});
child.send(data.key);
Child.js:---------------
"use strict";
const shm = require('shm-typed-array');
process.on('message', key => {
// Get access to shared memory
const data = shm.get(key, 'Float64Array');
// Perform processing
const sum = Array.prototype.reduce.call(data, (a, b) => a + b, 0);
// Return processed data
process.send(sum);
});
请提出任何建议......
答案 0 :(得分:1)
我建议当前使用Redis。这只是一个用redis每秒增加一个计数器的示例。您可以跨进程使用.get。如果您正在寻找Windows版本的Redis,可以在这里https://github.com/dmajkic/redis/downloads
const redis = require('redis');
const client = redis.createClient();
setInterval(() => {
client.get("count", (error, data) => {
data = JSON.parse(data);
data++;
client.set("count", data);
});
}, 1000);