Skip to content

Commit 9a4ac34

Browse files
authored
Add lua-multi-incr.js example (#1692)
Also fix syntax error in the lua example in the README Closes #1689.
1 parent 5539155 commit 9a4ac34

File tree

3 files changed

+37
-5
lines changed

3 files changed

+37
-5
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,9 +209,9 @@ import { createClient, defineScript } from 'redis';
209209
add: defineScript({
210210
NUMBER_OF_KEYS: 1,
211211
SCRIPT:
212-
"local val = redis.pcall('GET', KEYS[1]);' + 'return val + ARGV[1];",
212+
"local val = redis.pcall('GET', KEYS[1]);" + "return val + ARGV[1];",
213213
transformArguments(key: string, toAdd: number): Array<string> {
214-
return [key, number.toString()];
214+
return [key, toAdd.toString()];
215215
},
216216
transformReply(reply: number): number {
217217
return reply;

examples/README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
This folder contains example scripts showing how to use Node Redis in different scenarios.
44

5-
| File Name | Description |
6-
|--------------------------|--------------------------------------|
7-
| `connect-as-acl-user.js` | Connect to Redis 6 using an ACL user |
5+
| File Name | Description |
6+
| ------------------------ | ----------------------------------------------------------------------------- |
7+
| `connect-as-acl-user.js` | Connect to Redis 6 using an ACL user |
8+
| `lua-multi-incr.js` | Define a custom lua script that allows you to perform INCRBY on multiple keys |
89

910
## Contributing
1011

examples/lua-multi-incr.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Define a custome lua script that accepts two keys and an amount to
2+
// increment each of them by
3+
4+
import { createClient, defineScript } from 'redis';
5+
6+
async function luaMultiIncr() {
7+
const client = createClient({
8+
scripts: {
9+
mincr: defineScript({
10+
NUMBER_OF_KEYS: 2,
11+
SCRIPT:
12+
'return {' +
13+
'redis.pcall("INCRBY", KEYS[1], ARGV[1]),' +
14+
'redis.pcall("INCRBY", KEYS[2], ARGV[1])' +
15+
'}',
16+
transformArguments(key1, key2, increment) {
17+
return [key1, key2, increment.toString()];
18+
},
19+
}),
20+
},
21+
});
22+
23+
await client.connect();
24+
25+
await client.set('mykey', '5');
26+
console.log(await client.mincr('mykey', 'myotherkey', 10)); // [ 15, 10 ]
27+
28+
await client.quit();
29+
}
30+
31+
luaMultiIncr();

0 commit comments

Comments
 (0)