-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'upstream/emb-examples' into DOC-4200-tc…
…es-for-aggregation-query-page
- Loading branch information
Showing
8 changed files
with
771 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,195 @@ | ||
// EXAMPLE: cmds_generic | ||
// REMOVE_START | ||
import assert from "node:assert"; | ||
// REMOVE_END | ||
|
||
// HIDE_START | ||
import { createClient } from 'redis'; | ||
|
||
const client = createClient(); | ||
await client.connect().catch(console.error); | ||
// HIDE_END | ||
|
||
// STEP_START del | ||
const delRes1 = await client.set('key1', 'Hello'); | ||
console.log(delRes1); // OK | ||
|
||
const delRes2 = await client.set('key2', 'World'); | ||
console.log(delRes2); // OK | ||
|
||
const delRes3 = await client.del(['key1', 'key2', 'key3']); | ||
console.log(delRes3); // 2 | ||
// REMOVE_START | ||
assert.equal(delRes3, 2); | ||
// REMOVE_END | ||
// STEP_END | ||
|
||
// STEP_START expire | ||
const expireRes1 = await client.set('mykey', 'Hello'); | ||
console.log(expireRes1); // OK | ||
|
||
const expireRes2 = await client.expire('mykey', 10); | ||
console.log(expireRes2); // true | ||
|
||
const expireRes3 = await client.ttl('mykey'); | ||
console.log(expireRes3); // 10 | ||
// REMOVE_START | ||
assert.equal(expireRes3, 10); | ||
// REMOVE_END | ||
|
||
const expireRes4 = await client.set('mykey', 'Hello World'); | ||
console.log(expireRes4); // OK | ||
|
||
const expireRes5 = await client.ttl('mykey'); | ||
console.log(expireRes5); // -1 | ||
// REMOVE_START | ||
assert.equal(expireRes5, -1); | ||
// REMOVE_END | ||
|
||
const expireRes6 = await client.expire('mykey', 10, "XX"); | ||
console.log(expireRes6); // false | ||
// REMOVE_START | ||
assert.equal(expireRes6, false) | ||
// REMOVE_END | ||
|
||
const expireRes7 = await client.ttl('mykey'); | ||
console.log(expireRes7); // -1 | ||
// REMOVE_START | ||
assert.equal(expireRes7, -1); | ||
// REMOVE_END | ||
|
||
const expireRes8 = await client.expire('mykey', 10, "NX"); | ||
console.log(expireRes8); // true | ||
// REMOVE_START | ||
assert.equal(expireRes8, true); | ||
// REMOVE_END | ||
|
||
const expireRes9 = await client.ttl('mykey'); | ||
console.log(expireRes9); // 10 | ||
// REMOVE_START | ||
assert.equal(expireRes9, 10); | ||
await client.del('mykey'); | ||
// REMOVE_END | ||
// STEP_END | ||
|
||
// STEP_START ttl | ||
const ttlRes1 = await client.set('mykey', 'Hello'); | ||
console.log(ttlRes1); // OK | ||
|
||
const ttlRes2 = await client.expire('mykey', 10); | ||
console.log(ttlRes2); // true | ||
|
||
const ttlRes3 = await client.ttl('mykey'); | ||
console.log(ttlRes3); // 10 | ||
// REMOVE_START | ||
assert.equal(ttlRes3, 10); | ||
await client.del('mykey'); | ||
// REMOVE_END | ||
// STEP_END | ||
|
||
// STEP_START scan1 | ||
const scan1Res1 = await client.sAdd('myset', ['1', '2', '3', 'foo', 'foobar', 'feelsgood']); | ||
console.log(scan1Res1); // 6 | ||
|
||
const scan1Res2 = []; | ||
for await (const value of client.sScanIterator('myset', { MATCH: 'f*' })) { | ||
scan1Res2.push(value); | ||
} | ||
console.log(scan1Res2); // ['foo', 'foobar', 'feelsgood'] | ||
// REMOVE_START | ||
console.assert(scan1Res2.sort().toString() === ['foo', 'foobar', 'feelsgood'].sort().toString()); | ||
await client.del('myset'); | ||
// REMOVE_END | ||
// STEP_END | ||
|
||
// STEP_START scan2 | ||
// REMOVE_START | ||
for (let i = 1; i <= 1000; i++) { | ||
await client.set(`key:${i}`, i); | ||
} | ||
// REMOVE_END | ||
let cursor = '0'; | ||
let scanResult; | ||
|
||
scanResult = await client.scan(cursor, { MATCH: '*11*' }); | ||
console.log(scanResult.cursor, scanResult.keys); | ||
|
||
scanResult = await client.scan(scanResult.cursor, { MATCH: '*11*' }); | ||
console.log(scanResult.cursor, scanResult.keys); | ||
|
||
scanResult = await client.scan(scanResult.cursor, { MATCH: '*11*' }); | ||
console.log(scanResult.cursor, scanResult.keys); | ||
|
||
scanResult = await client.scan(scanResult.cursor, { MATCH: '*11*' }); | ||
console.log(scanResult.cursor, scanResult.keys); | ||
|
||
scanResult = await client.scan(scanResult.cursor, { MATCH: '*11*', COUNT: 1000 }); | ||
console.log(scanResult.cursor, scanResult.keys); | ||
// REMOVE_START | ||
console.assert(scanResult.keys.length === 18); | ||
cursor = '0'; | ||
const prefix = 'key:*'; | ||
while (cursor !== 0) { | ||
scanResult = await client.scan(cursor, { MATCH: prefix, COUNT: 1000 }); | ||
console.log(scanResult.cursor, scanResult.keys); | ||
cursor = scanResult.cursor; | ||
const keys = scanResult.keys; | ||
if (keys.length) { | ||
await client.del(keys); | ||
} | ||
} | ||
// REMOVE_END | ||
// STEP_END | ||
|
||
// STEP_START scan3 | ||
const scan3Res1 = await client.geoAdd('geokey', { longitude: 0, latitude: 0, member: 'value' }); | ||
console.log(scan3Res1); // 1 | ||
|
||
const scan3Res2 = await client.zAdd('zkey', [{ score: 1000, value: 'value' }]); | ||
console.log(scan3Res2); // 1 | ||
|
||
const scan3Res3 = await client.type('geokey'); | ||
console.log(scan3Res3); // zset | ||
// REMOVE_START | ||
console.assert(scan3Res3 === 'zset'); | ||
// REMOVE_END | ||
|
||
const scan3Res4 = await client.type('zkey'); | ||
console.log(scan3Res4); // zset | ||
// REMOVE_START | ||
console.assert(scan3Res4 === 'zset'); | ||
// REMOVE_END | ||
|
||
const scan3Res5 = await client.scan('0', { TYPE: 'zset' }); | ||
console.log(scan3Res5.keys); // ['zkey', 'geokey'] | ||
// REMOVE_START | ||
console.assert(scan3Res5.keys.sort().toString() === ['zkey', 'geokey'].sort().toString()); | ||
await client.del(['geokey', 'zkey']); | ||
// REMOVE_END | ||
// STEP_END | ||
|
||
// STEP_START scan4 | ||
const scan4Res1 = await client.hSet('myhash', { a: 1, b: 2 }); | ||
console.log(scan4Res1); // 2 | ||
|
||
const scan4Res2 = await client.hScan('myhash', 0); | ||
console.log(scan4Res2.tuples); // [{field: 'a', value: '1'}, {field: 'b', value: '2'}] | ||
// REMOVE_START | ||
assert.deepEqual(scan4Res2.tuples, [ | ||
{ field: 'a', value: '1' }, | ||
{ field: 'b', value: '2' } | ||
]); | ||
// REMOVE_END | ||
|
||
const scan4Res3 = await client.hScan('myhash', 0, { COUNT: 10 }); | ||
const items = scan4Res3.tuples.map((item) => item.field) | ||
console.log(items); // ['a', 'b'] | ||
// REMOVE_START | ||
assert.deepEqual(items, ['a', 'b']) | ||
await client.del('myhash'); | ||
// REMOVE_END | ||
// STEP_END | ||
|
||
// HIDE_START | ||
await client.quit(); | ||
// HIDE_END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
// EXAMPLE: cmds_hash | ||
// HIDE_START | ||
import assert from 'node:assert'; | ||
import { createClient } from 'redis'; | ||
|
||
const client = createClient(); | ||
await client.connect().catch(console.error); | ||
// HIDE_END | ||
|
||
// STEP_START hset | ||
const res1 = await client.hSet('myhash', 'field1', 'Hello') | ||
console.log(res1) // 1 | ||
|
||
const res2 = await client.hGet('myhash', 'field1') | ||
console.log(res2) // Hello | ||
|
||
const res3 = await client.hSet( | ||
'myhash', | ||
{ | ||
'field2': 'Hi', | ||
'field3': 'World' | ||
} | ||
) | ||
console.log(res3) // 2 | ||
|
||
const res4 = await client.hGet('myhash', 'field2') | ||
console.log(res4) // Hi | ||
|
||
const res5 = await client.hGet('myhash', 'field3') | ||
console.log(res5) // World | ||
|
||
const res6 = await client.hGetAll('myhash') | ||
console.log(res6) | ||
|
||
// REMOVE_START | ||
assert.equal(res1, 1); | ||
assert.equal(res2, 'Hello'); | ||
assert.equal(res3, 2); | ||
assert.equal(res4, 'Hi'); | ||
assert.equal(res5, 'World'); | ||
assert.deepEqual(res6, { | ||
field1: 'Hello', | ||
field2: 'Hi', | ||
field3: 'World' | ||
}); | ||
await client.del('myhash') | ||
// REMOVE_END | ||
// STEP_END | ||
|
||
// STEP_START hget | ||
const res7 = await client.hSet('myhash', 'field1', 'foo') | ||
console.log(res7) // 1 | ||
|
||
const res8 = await client.hGet('myhash', 'field1') | ||
console.log(res8) // foo | ||
|
||
const res9 = await client.hGet('myhash', 'field2') | ||
console.log(res9) // foo | ||
|
||
// REMOVE_START | ||
assert.equal(res7, 1); | ||
assert.equal(res8, 'foo'); | ||
assert.equal(res9, null); | ||
await client.del('myhash') | ||
// REMOVE_END | ||
// STEP_END | ||
|
||
// HIDE_START | ||
await client.quit(); | ||
// HIDE_END | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
// EXAMPLE: cmds_sorted_set | ||
// REMOVE_START | ||
import assert from "node:assert"; | ||
// REMOVE_END | ||
|
||
// HIDE_START | ||
import { createClient } from 'redis'; | ||
|
||
const client = createClient(); | ||
client.on('error', err => console.log('Redis Client Error', err)); | ||
await client.connect().catch(console.error); | ||
// HIDE_END | ||
|
||
// STEP_START zadd | ||
const val1 = await client.zAdd("myzset", [{ value: 'one', score: 1 }]); | ||
console.log(val1); | ||
// returns 1 | ||
|
||
const val2 = await client.zAdd("myzset", [{ value: 'uno', score: 1 }]); | ||
console.log(val2); | ||
// returns 1 | ||
|
||
const val3 = await client.zAdd("myzset", [{ value: 'two', score: 2 }, { value: 'three', score: 3 }]); | ||
console.log(val3); | ||
// returns 2 | ||
|
||
const val4 = await client.zRangeWithScores("myzset", 0, -1); | ||
console.log(val4); | ||
// returns [{value: 'one', score: 1}, {value: 'uno', score: 1}, {value: 'two', score: 2}, {value: 'three', score: 3} ] | ||
|
||
// REMOVE_START | ||
assert.equal(val1, 1); | ||
assert.equal(val2, 1); | ||
assert.equal(val3, 2); | ||
assert.deepEqual(val4, [ | ||
{ value: 'one', score: 1 }, | ||
{ value: 'uno', score: 1 }, | ||
{ value: 'two', score: 2 }, | ||
{ value: 'three', score: 3 } | ||
]); | ||
await client.del('myzset'); | ||
// REMOVE_END | ||
// STEP_END | ||
|
||
// STEP_START zrange1 | ||
const val5 = await client.zAdd("myzset", [ | ||
{ value: 'one', score: 1 }, | ||
{ value: 'two', score: 2 }, | ||
{ value: 'three', score: 3 } | ||
]); | ||
console.log(val5); | ||
// returns 3 | ||
|
||
const val6 = await client.zRange('myzset', 0, -1); | ||
console.log(val6); | ||
// returns ['one', 'two', 'three'] | ||
// REMOVE_START | ||
console.assert(JSON.stringify(val6) === JSON.stringify(['one', 'two', 'three'])); | ||
// REMOVE_END | ||
|
||
const val7 = await client.zRange('myzset', 2, 3); | ||
console.log(val7); | ||
// returns ['three'] | ||
// REMOVE_START | ||
console.assert(JSON.stringify(val7) === JSON.stringify(['three'])); | ||
// REMOVE_END | ||
|
||
const val8 = await client.zRange('myzset', -2, -1); | ||
console.log(val8); | ||
// returns ['two', 'three'] | ||
// REMOVE_START | ||
console.assert(JSON.stringify(val8) === JSON.stringify(['two', 'three'])); | ||
await client.del('myzset'); | ||
// REMOVE_END | ||
// STEP_END | ||
|
||
// STEP_START zrange2 | ||
const val9 = await client.zAdd("myzset", [ | ||
{ value: 'one', score: 1 }, | ||
{ value: 'two', score: 2 }, | ||
{ value: 'three', score: 3 } | ||
]); | ||
console.log(val9); | ||
// returns 3 | ||
|
||
const val10 = await client.zRangeWithScores('myzset', 0, 1); | ||
console.log(val10); | ||
// returns [{value: 'one', score: 1}, {value: 'two', score: 2}] | ||
// REMOVE_START | ||
console.assert(JSON.stringify(val10) === JSON.stringify([{value: 'one', score: 1}, {value: 'two', score: 2}])); | ||
await client.del('myzset'); | ||
// REMOVE_END | ||
// STEP_END | ||
|
||
// STEP_START zrange3 | ||
const val11 = await client.zAdd("myzset", [ | ||
{ value: 'one', score: 1 }, | ||
{ value: 'two', score: 2 }, | ||
{ value: 'three', score: 3 } | ||
]); | ||
console.log(val11); | ||
// returns 3 | ||
|
||
const val12 = await client.zRange('myzset', 2, 3, { BY: 'SCORE', LIMIT: { offset: 1, count: 1 } }); | ||
console.log(val12); | ||
// >>> ['three'] | ||
// REMOVE_START | ||
console.assert(JSON.stringify(val12) === JSON.stringify(['three'])); | ||
await client.del('myzset'); | ||
// REMOVE_END | ||
// STEP_END | ||
|
||
// HIDE_START | ||
await client.quit(); | ||
// HIDE_END |
Oops, something went wrong.