simplify by eliminating options
This commit is contained in:
parent
44ff858a0c
commit
e3aa7e90ad
77
README.md
77
README.md
@ -28,14 +28,31 @@ If you need that functionaliy, use v1 instead of v2.
|
|||||||
Usage
|
Usage
|
||||||
=====
|
=====
|
||||||
|
|
||||||
|
In its simplest form, you use this module nearly exactly the way you would
|
||||||
|
the any other storage module, with the exception that you must wait for
|
||||||
|
the inter-process initialization to complete.
|
||||||
|
|
||||||
|
When not using any of the options the usage is the same for the master and the worker:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
require('cluster-store').create().then(function (store) {
|
||||||
|
// initialization is now complete
|
||||||
|
store.set('foo', 'bar');
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
### standalone (non-cluster)
|
### standalone (non-cluster)
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
The usage is exactly the same as **master**, no changes necessary.
|
There is no disadvantage to using this module standalone.
|
||||||
|
The additional overhead of inter-process communication is only added when
|
||||||
|
a worker is added.
|
||||||
|
|
||||||
|
As such, the standalone usage is identical to usage in master process, as seen below.
|
||||||
|
|
||||||
### master
|
### master
|
||||||
|
|
||||||
In the **master**/**standalone** process you will create the real store instance.
|
In the **master** process you will create the real store instance.
|
||||||
|
|
||||||
If you need to manually specify which worker will be enabled for this funcitonality
|
If you need to manually specify which worker will be enabled for this funcitonality
|
||||||
you must set `addOnFork` to `false` and call `addWorker()` manually.
|
you must set `addOnFork` to `false` and call `addWorker()` manually.
|
||||||
@ -46,7 +63,7 @@ you must set `addOnFork` to `false` and call `addWorker()` manually.
|
|||||||
var cluster = require('cluster');
|
var cluster = require('cluster');
|
||||||
|
|
||||||
var cstore = require('cluster-store/master').create({
|
var cstore = require('cluster-store/master').create({
|
||||||
name: 'foo-store'
|
name: 'foo-store' // necessary when using multiple instances
|
||||||
, store: null // use default in-memory store
|
, store: null // use default in-memory store
|
||||||
, addOnFork: true // default
|
, addOnFork: true // default
|
||||||
});
|
});
|
||||||
@ -59,7 +76,8 @@ cstore.then(function (store) {
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: `store` can be replaced with any `express/session` store, such as:
|
Note: `store` can be replaced with any `express/session`-compatible store, such as:
|
||||||
|
|
||||||
* `new require('express-session/session/memory')()`
|
* `new require('express-session/session/memory')()`
|
||||||
* `require('level-session-store')(session)`
|
* `require('level-session-store')(session)`
|
||||||
* and others
|
* and others
|
||||||
@ -113,48 +131,21 @@ Example
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var cluster = require('cluster');
|
var cluster = require('cluster');
|
||||||
var cstore;
|
|
||||||
|
|
||||||
|
require('cluster-store').create({
|
||||||
|
name: 'foo-store'
|
||||||
|
}).then(function (store) {
|
||||||
|
if (cluster.isMaster) {
|
||||||
|
store.set('foo', 'bar');
|
||||||
|
}
|
||||||
|
|
||||||
|
store.get('foo', function (err, result) {
|
||||||
|
console.log(result);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
if (cluster.isMaster) {
|
if (cluster.isMaster) {
|
||||||
|
|
||||||
|
|
||||||
cstore = require('./master').create({
|
|
||||||
name: 'foo-level'
|
|
||||||
});
|
|
||||||
cstore.then(function (store) {
|
|
||||||
store.put('foo', 'bar');
|
|
||||||
});
|
|
||||||
|
|
||||||
// create as many workers as you need
|
|
||||||
cluster.fork();
|
cluster.fork();
|
||||||
|
cluster.fork();
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
|
|
||||||
|
|
||||||
cstore = require('./worker').create({
|
|
||||||
name: 'foo-level'
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
cstore.then(function (store) {
|
|
||||||
setTimeout(function () {
|
|
||||||
store.get('foo', function (err, result) {
|
|
||||||
console.log(cluster.isMaster && '0' || cluster.worker.id.toString(), "store.get('foo')", result);
|
|
||||||
|
|
||||||
if (!cluster.isMaster) {
|
|
||||||
process.exit(0);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, 250);
|
|
||||||
});
|
|
||||||
|
|
||||||
process.on('unhandledRejection', function (err) {
|
|
||||||
console.log('unhandledRejection', err);
|
|
||||||
});
|
|
||||||
```
|
```
|
||||||
|
15
index.js
15
index.js
@ -1,12 +1,9 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
console.error("");
|
var cluster = require('cluster');
|
||||||
console.error("One does not simply require('memstore-cluster');");
|
|
||||||
console.error("");
|
|
||||||
console.error("Usage:");
|
|
||||||
console.error("\trequire('memstore-cluster/master').create({ name: ... });");
|
|
||||||
console.error("\trequire('memstore-cluster/worker').create({ name: ... });");
|
|
||||||
console.error("");
|
|
||||||
console.error("");
|
|
||||||
|
|
||||||
process.exit(1);
|
if (cluster.isMaster) {
|
||||||
|
module.exports = require('./master');
|
||||||
|
} else {
|
||||||
|
module.exports = require('./worker');
|
||||||
|
}
|
||||||
|
26
simplest.js
Normal file
26
simplest.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var cluster = require('cluster');
|
||||||
|
var cstore;
|
||||||
|
|
||||||
|
require('./').create({
|
||||||
|
name: 'foo-store'
|
||||||
|
}).then(function (store) {
|
||||||
|
if (cluster.isMaster) {
|
||||||
|
cluster.fork();
|
||||||
|
cluster.fork();
|
||||||
|
|
||||||
|
store.set('foo', 'bar');
|
||||||
|
}
|
||||||
|
|
||||||
|
store.get('foo', function (err, result) {
|
||||||
|
console.log(cluster.isMaster && '0' || cluster.worker.id.toString(), 'foo', result);
|
||||||
|
if (!cluster.isMaster) {
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
process.on('unhandledRejection', function (err) {
|
||||||
|
console.log('unhandledRejection', err);
|
||||||
|
});
|
Loading…
x
Reference in New Issue
Block a user