Skip to content

Commit

Permalink
feat: add ioredis support
Browse files Browse the repository at this point in the history
Thanks a lot again to thepipster!

Adds support for ioredis by just passing it in as the redis client.

Please see the PR for some simple benchmarks before deciding to use it: #138
  • Loading branch information
maritz authored Sep 7, 2018
1 parent 5e870f4 commit f4fa805
Show file tree
Hide file tree
Showing 20 changed files with 569 additions and 264 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ tsOut/
.vscode/
coverage/
.nyc_output/
.DS_Store
13 changes: 8 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
language: node_js
node_js:
- "stable"
- "lts/*"
- "8"
- 'stable'
- 'lts/*'
- '8'
services:
- redis-server
before_script:
before_script:
- npm run build
script:
- npm run test
- npm run coverage:failIfLow
after_success:
after_success:
- npm run coverage:coveralls
env:
- NOHM_TEST_IOREDIS="false"
- NOHM_TEST_IOREDIS="true"
10 changes: 5 additions & 5 deletions docs/api/NohmClass.html
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ <h4 class="name" id="factory"><span class="type-signature">(async) </span>factor

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line581">line 581</a>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line583">line 583</a>
</li></ul></dd>


Expand Down Expand Up @@ -428,7 +428,7 @@ <h4 class="name" id="getModels"><span class="type-signature"></span>getModels<sp

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line566">line 566</a>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line568">line 568</a>
</li></ul></dd>


Expand Down Expand Up @@ -981,7 +981,7 @@ <h4 class="name" id="model"><span class="type-signature"></span>model<span class

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line162">line 162</a>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line164">line 164</a>
</li></ul></dd>


Expand Down Expand Up @@ -1199,7 +1199,7 @@ <h4 class="name" id="purgeDb"><span class="type-signature">(async) </span>purgeD

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line611">line 611</a>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line613">line 613</a>
</li></ul></dd>


Expand Down Expand Up @@ -1346,7 +1346,7 @@ <h4 class="name" id="register"><span class="type-signature"></span>register<span

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line404">line 404</a>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line406">line 406</a>
</li></ul></dd>


Expand Down
14 changes: 7 additions & 7 deletions docs/api/NohmModel.html
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ <h4 class="name" id="id"><span class="type-signature"></span>id<span class="type

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_model.js.html">tsOut/model.js</a>, <a href="tsOut_model.js.html#line1555">line 1555</a>
<a href="tsOut_model.js.html">tsOut/model.js</a>, <a href="tsOut_model.js.html#line1570">line 1570</a>
</li></ul></dd>


Expand Down Expand Up @@ -373,7 +373,7 @@ <h4 class="name" id="isDirty"><span class="type-signature"></span>isDirty<span c

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_model.js.html">tsOut/model.js</a>, <a href="tsOut_model.js.html#line1588">line 1588</a>
<a href="tsOut_model.js.html">tsOut/model.js</a>, <a href="tsOut_model.js.html#line1603">line 1603</a>
</li></ul></dd>


Expand Down Expand Up @@ -437,7 +437,7 @@ <h4 class="name" id="isLoaded"><span class="type-signature">(readonly) </span>is

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_model.js.html">tsOut/model.js</a>, <a href="tsOut_model.js.html#line1581">line 1581</a>
<a href="tsOut_model.js.html">tsOut/model.js</a>, <a href="tsOut_model.js.html#line1596">line 1596</a>
</li></ul></dd>


Expand Down Expand Up @@ -1398,7 +1398,7 @@ <h4 class="name" id="getDefinitions"><span class="type-signature"></span>getDefi

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_model.js.html">tsOut/model.js</a>, <a href="tsOut_model.js.html#line1476">line 1476</a>
<a href="tsOut_model.js.html">tsOut/model.js</a>, <a href="tsOut_model.js.html#line1491">line 1491</a>
</li></ul></dd>


Expand Down Expand Up @@ -3204,7 +3204,7 @@ <h4 class="name" id="subscribe"><span class="type-signature">(async) </span>subs

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_model.js.html">tsOut/model.js</a>, <a href="tsOut_model.js.html#line1519">line 1519</a>
<a href="tsOut_model.js.html">tsOut/model.js</a>, <a href="tsOut_model.js.html#line1534">line 1534</a>
</li></ul></dd>


Expand Down Expand Up @@ -3382,7 +3382,7 @@ <h4 class="name" id="subscribeOnce"><span class="type-signature">(async) </span>

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_model.js.html">tsOut/model.js</a>, <a href="tsOut_model.js.html#line1531">line 1531</a>
<a href="tsOut_model.js.html">tsOut/model.js</a>, <a href="tsOut_model.js.html#line1546">line 1546</a>
</li></ul></dd>


Expand Down Expand Up @@ -3953,7 +3953,7 @@ <h4 class="name" id="unsubscribeEvent"><span class="type-signature"></span>unsub

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_model.js.html">tsOut/model.js</a>, <a href="tsOut_model.js.html#line1542">line 1542</a>
<a href="tsOut_model.js.html">tsOut/model.js</a>, <a href="tsOut_model.js.html#line1557">line 1557</a>
</li></ul></dd>


Expand Down
18 changes: 9 additions & 9 deletions docs/api/NohmStaticModel.html
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ <h4 class="name" id="NohmStaticModel"><span class="type-signature"></span>new No

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line169">line 169</a>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line171">line 171</a>
</li></ul></dd>


Expand Down Expand Up @@ -161,7 +161,7 @@ <h4 class="name" id=".this.client"><span class="type-signature">(static) </span>

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line192">line 192</a>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line194">line 194</a>
</li></ul></dd>


Expand Down Expand Up @@ -235,7 +235,7 @@ <h4 class="name" id=".this.modelName"><span class="type-signature">(static) </sp

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line201">line 201</a>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line203">line 203</a>
</li></ul></dd>


Expand Down Expand Up @@ -318,7 +318,7 @@ <h4 class="name" id=".find"><span class="type-signature">(async, static) </span>

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line322">line 322</a>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line324">line 324</a>
</li></ul></dd>


Expand Down Expand Up @@ -500,7 +500,7 @@ <h4 class="name" id="..findAndLoad"><span class="type-signature">(async, static)

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line287">line 287</a>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line289">line 289</a>
</li></ul></dd>


Expand Down Expand Up @@ -651,7 +651,7 @@ <h4 class="name" id="..load"><span class="type-signature">(async, static) </span

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line242">line 242</a>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line244">line 244</a>
</li></ul></dd>


Expand Down Expand Up @@ -832,7 +832,7 @@ <h4 class="name" id="..loadMany"><span class="type-signature">(async, static) </

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line258">line 258</a>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line260">line 260</a>
</li></ul></dd>


Expand Down Expand Up @@ -985,7 +985,7 @@ <h4 class="name" id=".remove"><span class="type-signature">(async, static) </spa

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line335">line 335</a>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line337">line 337</a>
</li></ul></dd>


Expand Down Expand Up @@ -1136,7 +1136,7 @@ <h4 class="name" id="..sort"><span class="type-signature">(async, static) </span

<dt class="tag-source">Source:</dt>
<dd class="tag-source"><ul class="dummy"><li>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line308">line 308</a>
<a href="tsOut_index.js.html">tsOut/index.js</a>, <a href="tsOut_index.js.html#line310">line 310</a>
</li></ul></dd>


Expand Down
16 changes: 9 additions & 7 deletions docs/api/tsOut_index.js.html
Original file line number Diff line number Diff line change
Expand Up @@ -165,11 +165,13 @@ <h1 class="page-title">tsOut/index.js</h1>
* Note: this will not affect models that have a client set on their own.
*/
setClient(client) {
debug('Setting new redis client. Connected: %s; Address: %s.', client &amp;&amp; client.connected, client &amp;&amp; client.address);
if (client &amp;&amp; !client.connected) {
debug('Setting new redis client. Connected: %s; Address: %s.', client &amp;&amp; (client.connected || client.status === 'ready'), client &amp;&amp; client.address);
// ioredis uses .status string instead of .connected boolean
if (client &amp;&amp; !(client.connected || client.status === 'ready')) {
this
.logError(`WARNING: setClient() received a redis client that is not connected yet.
Consider waiting for an established connection before setting it.`);
Consider waiting for an established connection before setting it. Status (if ioredis): ${client.status}
, connected (if node_redis): ${client.connected}`);
}
else if (!client) {
client = redis.createClient();
Expand Down Expand Up @@ -650,15 +652,15 @@ <h1 class="page-title">tsOut/index.js</h1>
async purgeDb(client = this.client) {
function delKeys(prefix) {
return new Promise((resolve, reject) => {
client.KEYS(prefix + '*', (err, keys) => {
client.keys(prefix + '*', (err, keys) => {
if (err) {
reject(err);
}
else if (keys.length === 0) {
resolve();
}
else {
client.DEL(keys, (innerErr) => {
client.del(keys, (innerErr) => {
if (innerErr) {
reject(innerErr);
}
Expand Down Expand Up @@ -734,7 +736,7 @@ <h1 class="page-title">tsOut/index.js</h1>
this.publishEventEmitter = new events_1.EventEmitter();
this.publishEventEmitter.setMaxListeners(0); // TODO: check if this is sensible
this.isPublishSubscribed = true;
await typed_redis_helper_1.PSUBSCRIBE(this.publishClient, this.prefix.channel + PUBSUB_ALL_PATTERN);
await typed_redis_helper_1.psubscribe(this.publishClient, this.prefix.channel + PUBSUB_ALL_PATTERN);
debugPubSub(`Redis PSUBSCRIBE for '%s'.`, this.prefix.channel + PUBSUB_ALL_PATTERN);
this.publishClient.on('pmessage', (_pattern, channel, message) => {
const suffix = channel.slice(this.prefix.channel.length);
Expand Down Expand Up @@ -782,7 +784,7 @@ <h1 class="page-title">tsOut/index.js</h1>
if (this.isPublishSubscribed === true) {
debugPubSub(`Redis PUNSUBSCRIBE for '%s'.`, this.prefix.channel + PUBSUB_ALL_PATTERN);
this.isPublishSubscribed = false;
await typed_redis_helper_1.PUNSUBSCRIBE(this.publishClient, this.prefix.channel + PUBSUB_ALL_PATTERN);
await typed_redis_helper_1.punsubscribe(this.publishClient, this.prefix.channel + PUBSUB_ALL_PATTERN);
}
return this.publishClient;
}
Expand Down
Loading

0 comments on commit f4fa805

Please sign in to comment.