Skip to content

Commit abe2b5b

Browse files
committed
docs: add examples for xrange and xadd
1 parent decf10c commit abe2b5b

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

examples/stream.js

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
const Redis = require("ioredis");
22
const redis = new Redis();
3+
const sub = new Redis();
34
const pub = new Redis();
45

6+
// Usage 1: As message hub
57
const processMessage = (message) => {
68
console.log("Id: %s. Data: %O", message[0], message[1]);
79
};
@@ -10,13 +12,7 @@ async function listenForMessage(lastId = "$") {
1012
// `results` is an array, each element of which corresponds to a key.
1113
// Because we only listen to one key (mystream) here, `results` only contains
1214
// a single element. See more: https://redis.io/commands/xread#return-value
13-
const results = await redis.xread(
14-
"BLOCK",
15-
0,
16-
"STREAMS",
17-
"user-stream",
18-
lastId
19-
);
15+
const results = await sub.xread("BLOCK", 0, "STREAMS", "user-stream", lastId);
2016
const [key, messages] = results[0]; // `key` equals to "user-stream"
2117

2218
messages.forEach(processMessage);
@@ -32,3 +28,22 @@ setInterval(() => {
3228
// so we use another connection to publish messages.
3329
pub.xadd("user-stream", "*", "name", "John", "age", "20");
3430
}, 1000);
31+
32+
// Usage 2: As a list
33+
async function main() {
34+
redis
35+
.pipeline()
36+
.xadd("list-stream", "*", "id", "item1")
37+
.xadd("list-stream", "*", "id", "item2")
38+
.xadd("list-stream", "*", "id", "item3")
39+
.exec();
40+
41+
const items = await redis.xrange("list-stream", "-", "+", "COUNT", 2);
42+
console.log(items);
43+
// [
44+
// [ '1647321710097-0', [ 'id', 'item1' ] ],
45+
// [ '1647321710098-0', [ 'id', 'item2' ] ]
46+
// ]
47+
}
48+
49+
main();

0 commit comments

Comments
 (0)