From 82ca25c5d223b18ddf33c6c38cd9a461c981adda Mon Sep 17 00:00:00 2001 From: Justin Castilla Date: Tue, 25 Jul 2023 12:56:21 -0700 Subject: [PATCH 1/4] Adds code examples for the set tutorial --- doctests/dt-set.js | 176 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 doctests/dt-set.js diff --git a/doctests/dt-set.js b/doctests/dt-set.js new file mode 100644 index 00000000000..5324ca5305e --- /dev/null +++ b/doctests/dt-set.js @@ -0,0 +1,176 @@ +// EXAMPLE: sets_tutorial +// HIDE_START +import assert from 'assert'; +import { createClient } from 'redis'; + +const client = await createClient(); +await client.connect(); +// HIDE_END +// REMOVE_START +await client.del('bikes:racing:france') +await client.del('bikes:racing:usa') +// REMOVE_END + +// STEP_START sAdd +const res1 = await client.sAdd('bikes:racing:france', 'bike:1') +console.log(res1) // >>> 1 + +const res2 = await client.sAdd('bikes:racing:france', 'bike:1') +console.log(res2) // >>> 0 +const res3 = await client.sAdd('bikes:racing:france', ['bike:2', 'bike:3']) +console.log(res3) // >>> 2 +const res4 = await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) +console.log(res4) // >>> 2 +// STEP_END + +// REMOVE_START +assert.equal(res1, 1) +assert.equal(res2, 0) +assert.equal(res3, 2) +assert.equal(res4, 2) +// REMOVE_END + +// STEP_START sIsMember +// HIDE_START +await client.del('bikes:racing:france') +await client.del('bikes:racing:usa') +await client.sAdd('bikes:racing:france', 'bike:1', 'bike:2', 'bike:3') +await client.sAdd('bikes:racing:usa', 'bike:1', 'bike:4') +// HIDE_END +const res5 = await client.sIsMember('bikes:racing:usa', 'bike:1') +console.log(res5) // >>> true + +const res6 = await client.sIsMember('bikes:racing:usa', 'bike:2') +console.log(res6) // >>> false +// STEP_END + +// REMOVE_START +assert.equal(res5, true) +assert.equal(res6, false) +// REMOVE_END + +// STEP_START sinster +// HIDE_START +await client.del('bikes:racing:france') +await client.del('bikes:racing:usa') +await client.sAdd('bikes:racing:france', 'bike:1', 'bike:2', 'bike:3') +await client.sAdd('bikes:racing:usa', 'bike:1', 'bike:4') +// HIDE_END +const res7 = await client.sInter('bikes:racing:france', 'bikes:racing:usa') +console.log(res7) // >>> {'bike:1'} +// STEP_END + +// REMOVE_START +assert.deepEqual(res7, [ 'bike:1' ]) +// REMOVE_END + +// STEP_START sCard +// HIDE_START +await client.del('bikes:racing:france') +await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) +// HIDE_END +const res8 = await client.sCard('bikes:racing:france') +console.log(res8) // >>> 3 +// STEP_END + +// REMOVE_START +assert.equal(res8, 3) +await client.del('bikes:racing:france') +// REMOVE_END + +// STEP_START sAdd_sMembers +const res9 = await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) +console.log(res9) // >>> 3 + +const res10 = await client.sMembers('bikes:racing:france') +console.log(res10) // >>> ['bike:1', 'bike:2', 'bike:3'] +// STEP_END + +// REMOVE_START +assert.equal(res9, 3) +assert.deepEqual(res10, ['bike:1', 'bike:2', 'bike:3']) +// REMOVE_END + +// STEP_START smIsMember +const res11 = await client.sIsMember('bikes:racing:france', 'bike:1') +console.log(res11) // >>> true + +const res12 = await client.smIsMember('bikes:racing:france', ['bike:2', 'bike:3', 'bike:4']) +console.log(res12) // >>> [true, true, false] +// STEP_END + +// REMOVE_START +assert.equal(res11, true) +assert.deepEqual(res12, [true, true, false]) +// REMOVE_END + +// STEP_START sDiff +await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) +await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) +const res13 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa']) +console.log(res13) // >>> [ 'bike:2', 'bike:3' ] +// STEP_END + +// REMOVE_START +assert.deepEqual(res13, ['bike:2', 'bike:3']) +await client.del('bikes:racing:france') +await client.del('bikes:racing:usa') +// REMOVE_END + +// STEP_START multisets +await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) +await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) +await client.sAdd('bikes:racing:italy', ['bike:1', 'bike:2', 'bike:3', 'bike:4']) + +const res14 = await client.sInter( + ['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy'] +) +console.log(res14) // >>> ['bike:1'] + +const res15 = await client.sUnion( + ['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy'] +) +console.log(res15) // >>> ['bike:1', 'bike:2', 'bike:3', 'bike:4'] + +const res16 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy']) +console.log(res16) // >>> [] + +const res17 = await client.sDiff(['bikes:racing:usa', 'bikes:racing:france']) +console.log(res17) // >>> ['bike:4'] + +const res18 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa']) +console.log(res18) // >>> ['bike:2', 'bike:3'] +// STEP_END + +// REMOVE_START +assert.deepEqual(res14, ['bike:1']) +assert.deepEqual(res15, [ 'bike:2', 'bike:1', 'bike:4', 'bike:3' ]) +assert.deepEqual(res16, []) +assert.deepEqual(res17, ['bike:4']) +assert.deepEqual(res18, ['bike:2', 'bike:3']) +await client.del('bikes:racing:france') +await client.del('bikes:racing:usa') +await client.del('bikes:racing:italy') +// REMOVE_END + +// STEP_START sRem +await client.sAdd('bikes:racing:france', 'bike:1', 'bike:2', 'bike:3', 'bike:4', 'bike:5') + +const res19 = await client.sRem('bikes:racing:france', 'bike:1') +console.log(res19) // >>> 1 + +const res20 = await client.sPop('bikes:racing:france') +console.log(res20) // >>> bike:3 + +const res21 = await client.sMembers('bikes:racing:france') +console.log(res21) // >>> ['bike:2', 'bike:4', 'bike:5'] + +const res22 = await client.sRandMember('bikes:racing:france') +console.log(res22) // >>> bike:4 +// STEP_END + +// REMOVE_START +assert.equal(res19, 1) +client.quit() +// none of the other results are deterministic +// REMOVE_END From 5348c8a215d67b22c0ba6281062c2562c64c0f86 Mon Sep 17 00:00:00 2001 From: Justin Castilla Date: Tue, 24 Oct 2023 12:31:59 -0700 Subject: [PATCH 2/4] modifies tests to sort for easy deepEqual --- doctests/dt-set.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doctests/dt-set.js b/doctests/dt-set.js index 5324ca5305e..071f45becaf 100644 --- a/doctests/dt-set.js +++ b/doctests/dt-set.js @@ -88,7 +88,7 @@ console.log(res10) // >>> ['bike:1', 'bike:2', 'bike:3'] // REMOVE_START assert.equal(res9, 3) -assert.deepEqual(res10, ['bike:1', 'bike:2', 'bike:3']) +assert.deepEqual(res10.sort(), ['bike:1', 'bike:2', 'bike:3']) // REMOVE_END // STEP_START smIsMember @@ -144,7 +144,7 @@ console.log(res18) // >>> ['bike:2', 'bike:3'] // REMOVE_START assert.deepEqual(res14, ['bike:1']) -assert.deepEqual(res15, [ 'bike:2', 'bike:1', 'bike:4', 'bike:3' ]) +assert.deepEqual(res15.sort(), ['bike:1', 'bike:2', 'bike:3', 'bike:4']) assert.deepEqual(res16, []) assert.deepEqual(res17, ['bike:4']) assert.deepEqual(res18, ['bike:2', 'bike:3']) From 7731a3d37e6abc4fb0c90a77a7959af666b5da8e Mon Sep 17 00:00:00 2001 From: Justin Castilla Date: Tue, 24 Oct 2023 15:29:17 -0700 Subject: [PATCH 3/4] adds node.js string examples --- doctests/dt-string.js | 69 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 doctests/dt-string.js diff --git a/doctests/dt-string.js b/doctests/dt-string.js new file mode 100644 index 00000000000..d4542364277 --- /dev/null +++ b/doctests/dt-string.js @@ -0,0 +1,69 @@ +// EXAMPLE: string_tutorial +// HIDE_START +import assert from 'assert'; +import { createClient } from 'redis'; + +const client = await createClient(); +await client.connect(); +// HIDE_END +// REMOVE_START +await client.flushDb(); +// REMOVE_END + +// STEP_START set +const res1 = await client.set("bike:1", "Deimos"); +console.log(res1); // true +const res2 = await client.get("bike:1"); +console.log(res2); // Deimos +// STEP_END + +// REMOVE_START +assert.equal(res1, 'OK'); +assert.equal(res2, 'Deimos'); +// REMOVE_END + +// STEP_START set_nx_xx +// HIDE_START +const res3 = await client.set("bike:1", "bike", 'NX'); +console.log(res3); // None +console.log(await client.get("bike:1")); // Deimos +const res4 = await client.set("bike:1", "bike", 'XX'); +console.log(res4); // True +// STEP_END + +// REMOVE_START +assert.equal(res3, 'OK'); +assert.equal(res4, 'OK'); +// REMOVE_END + +// STEP_START mset +const res5 = await client.mSet([ + ["bike:1", "Deimos"], + ["bike:2", "Ares"], + ["bike:3", "Vanth"] +]); + +console.log(res5); // true +const res6 = await client.mGet(["bike:1", "bike:2", "bike:3"]); +console.log(res6); // ['Deimos', 'Ares', 'Vanth'] +// STEP_END + +// REMOVE_START +assert.equal(res5, 'OK'); +assert.deepEqual(res6, ["Deimos", "Ares", "Vanth"]); +// REMOVE_END + +// STEP_START incr +await client.set("total_crashes", 0); +const res7 = await client.incr("total_crashes"); +console.log(res7); // 1 +const res8 = await client.incrBy("total_crashes", 10); +console.log(res8); // 11 +// STEP_END + +// REMOVE_START +assert.equal(res7, 1); +assert.equal(res8, 11); +// REMOVE_END + +await client.quit(); \ No newline at end of file From 5ed4611add7b4ec57d2803c556203d2bf5ad498b Mon Sep 17 00:00:00 2001 From: Justin Castilla Date: Tue, 24 Oct 2023 15:36:00 -0700 Subject: [PATCH 4/4] removes other test file --- doctests/dt-set.js | 176 --------------------------------------------- 1 file changed, 176 deletions(-) delete mode 100644 doctests/dt-set.js diff --git a/doctests/dt-set.js b/doctests/dt-set.js deleted file mode 100644 index 071f45becaf..00000000000 --- a/doctests/dt-set.js +++ /dev/null @@ -1,176 +0,0 @@ -// EXAMPLE: sets_tutorial -// HIDE_START -import assert from 'assert'; -import { createClient } from 'redis'; - -const client = await createClient(); -await client.connect(); -// HIDE_END -// REMOVE_START -await client.del('bikes:racing:france') -await client.del('bikes:racing:usa') -// REMOVE_END - -// STEP_START sAdd -const res1 = await client.sAdd('bikes:racing:france', 'bike:1') -console.log(res1) // >>> 1 - -const res2 = await client.sAdd('bikes:racing:france', 'bike:1') -console.log(res2) // >>> 0 -const res3 = await client.sAdd('bikes:racing:france', ['bike:2', 'bike:3']) -console.log(res3) // >>> 2 -const res4 = await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) -console.log(res4) // >>> 2 -// STEP_END - -// REMOVE_START -assert.equal(res1, 1) -assert.equal(res2, 0) -assert.equal(res3, 2) -assert.equal(res4, 2) -// REMOVE_END - -// STEP_START sIsMember -// HIDE_START -await client.del('bikes:racing:france') -await client.del('bikes:racing:usa') -await client.sAdd('bikes:racing:france', 'bike:1', 'bike:2', 'bike:3') -await client.sAdd('bikes:racing:usa', 'bike:1', 'bike:4') -// HIDE_END -const res5 = await client.sIsMember('bikes:racing:usa', 'bike:1') -console.log(res5) // >>> true - -const res6 = await client.sIsMember('bikes:racing:usa', 'bike:2') -console.log(res6) // >>> false -// STEP_END - -// REMOVE_START -assert.equal(res5, true) -assert.equal(res6, false) -// REMOVE_END - -// STEP_START sinster -// HIDE_START -await client.del('bikes:racing:france') -await client.del('bikes:racing:usa') -await client.sAdd('bikes:racing:france', 'bike:1', 'bike:2', 'bike:3') -await client.sAdd('bikes:racing:usa', 'bike:1', 'bike:4') -// HIDE_END -const res7 = await client.sInter('bikes:racing:france', 'bikes:racing:usa') -console.log(res7) // >>> {'bike:1'} -// STEP_END - -// REMOVE_START -assert.deepEqual(res7, [ 'bike:1' ]) -// REMOVE_END - -// STEP_START sCard -// HIDE_START -await client.del('bikes:racing:france') -await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) -// HIDE_END -const res8 = await client.sCard('bikes:racing:france') -console.log(res8) // >>> 3 -// STEP_END - -// REMOVE_START -assert.equal(res8, 3) -await client.del('bikes:racing:france') -// REMOVE_END - -// STEP_START sAdd_sMembers -const res9 = await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) -console.log(res9) // >>> 3 - -const res10 = await client.sMembers('bikes:racing:france') -console.log(res10) // >>> ['bike:1', 'bike:2', 'bike:3'] -// STEP_END - -// REMOVE_START -assert.equal(res9, 3) -assert.deepEqual(res10.sort(), ['bike:1', 'bike:2', 'bike:3']) -// REMOVE_END - -// STEP_START smIsMember -const res11 = await client.sIsMember('bikes:racing:france', 'bike:1') -console.log(res11) // >>> true - -const res12 = await client.smIsMember('bikes:racing:france', ['bike:2', 'bike:3', 'bike:4']) -console.log(res12) // >>> [true, true, false] -// STEP_END - -// REMOVE_START -assert.equal(res11, true) -assert.deepEqual(res12, [true, true, false]) -// REMOVE_END - -// STEP_START sDiff -await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) -await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) -const res13 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa']) -console.log(res13) // >>> [ 'bike:2', 'bike:3' ] -// STEP_END - -// REMOVE_START -assert.deepEqual(res13, ['bike:2', 'bike:3']) -await client.del('bikes:racing:france') -await client.del('bikes:racing:usa') -// REMOVE_END - -// STEP_START multisets -await client.sAdd('bikes:racing:france', ['bike:1', 'bike:2', 'bike:3']) -await client.sAdd('bikes:racing:usa', ['bike:1', 'bike:4']) -await client.sAdd('bikes:racing:italy', ['bike:1', 'bike:2', 'bike:3', 'bike:4']) - -const res14 = await client.sInter( - ['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy'] -) -console.log(res14) // >>> ['bike:1'] - -const res15 = await client.sUnion( - ['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy'] -) -console.log(res15) // >>> ['bike:1', 'bike:2', 'bike:3', 'bike:4'] - -const res16 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa', 'bikes:racing:italy']) -console.log(res16) // >>> [] - -const res17 = await client.sDiff(['bikes:racing:usa', 'bikes:racing:france']) -console.log(res17) // >>> ['bike:4'] - -const res18 = await client.sDiff(['bikes:racing:france', 'bikes:racing:usa']) -console.log(res18) // >>> ['bike:2', 'bike:3'] -// STEP_END - -// REMOVE_START -assert.deepEqual(res14, ['bike:1']) -assert.deepEqual(res15.sort(), ['bike:1', 'bike:2', 'bike:3', 'bike:4']) -assert.deepEqual(res16, []) -assert.deepEqual(res17, ['bike:4']) -assert.deepEqual(res18, ['bike:2', 'bike:3']) -await client.del('bikes:racing:france') -await client.del('bikes:racing:usa') -await client.del('bikes:racing:italy') -// REMOVE_END - -// STEP_START sRem -await client.sAdd('bikes:racing:france', 'bike:1', 'bike:2', 'bike:3', 'bike:4', 'bike:5') - -const res19 = await client.sRem('bikes:racing:france', 'bike:1') -console.log(res19) // >>> 1 - -const res20 = await client.sPop('bikes:racing:france') -console.log(res20) // >>> bike:3 - -const res21 = await client.sMembers('bikes:racing:france') -console.log(res21) // >>> ['bike:2', 'bike:4', 'bike:5'] - -const res22 = await client.sRandMember('bikes:racing:france') -console.log(res22) // >>> bike:4 -// STEP_END - -// REMOVE_START -assert.equal(res19, 1) -client.quit() -// none of the other results are deterministic -// REMOVE_END