如何在nodeJs中使用Childprocess.fork((创建的进程中重用redis连接?
例如,我会有一个redis-config.js文件,在其中创建RedisClient的实例并连接到redis服务器。因此,在那之后,我会有另一个文件,例如test.js,在这个文件test.js中,我会通过导入访问redis的实例,然后我可以在redis中插入一个键。但这并没有创建到redis服务器的另一个连接。
例如
redis-conf.js
const Redis = require('redis');
const redisClient = Redis.createClient({name:'test-conecction'});
module.exports = {redisClient:Object.freeze(redisClient)}
main.js
const cp = require('node:child_process');
const {redisClient} = require('./redis');
redisClient.connect().then(()=>{ <<=== this is want i want, this does not work, i want to connect only once.
const c1 = cp.fork('./child.js');
const c2 = cp.fork('./child.js');
})
child.js
const {redisClient} = require('./redis');
redisClient.info().then((data)=>{ <<== when i try this, nodeJs tells that the client is disconnected
console.log(data);
})
IN简历。这是不可能的。因为当nodeJ创建一个子Porcess时,会重新创建每个对象,并重新分配所有资源。