Netherworld's Pretend Minibar
Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

sharedmemory

0.0.7 • Public • Published

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条
    }
});

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

Install

npm i sharedmemory

DownloadsWeekly Downloads

3

Version

0.0.7

License

MIT

Last publish

Collaborators

  • avatar