Skip to content

x6doooo/sharedmemory

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 

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

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

About

node.js cluster shared memory

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published