Skip to content
node.js cluster shared memory
JavaScript
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples
lib
test
LICENSE-MIT
README.md
index.js
package.json

README.md

SharedMemory

通过IPC实现Cluster共享内存

NPM

Installation

npm install sharedmemory

Usage

var cluster = require('cluster')
var initSharedMemory = require('./sharedmemory').init;

// 创建共享内存的控制器
// 在master进程中,控制器负责维护共享内存
// 在worker进程中,控制器负责和master的控制器通信,通过IPC消息对共享内存进行读写操作
var sharedMemoryController = initSharedMemory();

if (cluster.isMaster) {

    // fork第一个worker
    cluster.fork();

    // 1秒后fork第二个worker
    setTimeout(function() {
        cluster.fork(); 
    }, 1000);
      
} else {

    if (cluster.worker.id == 1) {
        // 第一个worker向共享内存写入一组数据,用a标记
        sharedMemoryController.set('a', [0, 1, 2, 3]);
    }

    if (cluster.worker.id == 2) {
        // 第二个worker从共享内存读取a的值
        sharedMemoryController.get('a', function(data) {
            console.log(data);  // => [0, 1, 2, 3]
            // 删除
            sharedMemoryController.remove('a');
        });
    }
    
}

Configure

1、 无参数

require('./sharedmemory').init();

默认情况会直接在主进程里创建共享内存,并且没有缓存控制策略

2、 过期淘汰

require('./sharedmemory').init({
    cache: {
        type: 'expire', //类型
        expire: 60 * 60 * 1000    //一小时过期。不指定则采用默认的30分钟过期
    }
});

3、 LRU

require('./sharedmemory').init({
    cache: {
        type: 'LRU', //类型
        max: 20000    //最多20000条记录。不指定则采用默认的10000条
    }
});

超过记录数,最长时间未被访问的记录会被删除。

You can’t perform that action at this time.