simplify by eliminating options

This commit is contained in:
AJ ONeal 2016-09-08 18:49:31 -06:00
parent 44ff858a0c
commit e3aa7e90ad
3 changed files with 66 additions and 52 deletions

View File

@ -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);
});
``` ```

View File

@ -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
View 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);
});