1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-06 02:15:48 +03:00

Add lua-multi-incr.js example (#1692)

Also fix syntax error in the lua example in the README

Closes #1689.
This commit is contained in:
Joshua T
2021-10-26 04:01:19 +05:30
committed by GitHub
parent 55391557ca
commit 9a4ac34f18
3 changed files with 37 additions and 5 deletions

View File

@@ -209,9 +209,9 @@ import { createClient, defineScript } from 'redis';
add: defineScript({
NUMBER_OF_KEYS: 1,
SCRIPT:
"local val = redis.pcall('GET', KEYS[1]);' + 'return val + ARGV[1];",
"local val = redis.pcall('GET', KEYS[1]);" + "return val + ARGV[1];",
transformArguments(key: string, toAdd: number): Array<string> {
return [key, number.toString()];
return [key, toAdd.toString()];
},
transformReply(reply: number): number {
return reply;

View File

@@ -3,8 +3,9 @@
This folder contains example scripts showing how to use Node Redis in different scenarios.
| File Name | Description |
|--------------------------|--------------------------------------|
| ------------------------ | ----------------------------------------------------------------------------- |
| `connect-as-acl-user.js` | Connect to Redis 6 using an ACL user |
| `lua-multi-incr.js` | Define a custom lua script that allows you to perform INCRBY on multiple keys |
## Contributing

View File

@@ -0,0 +1,31 @@
// Define a custome lua script that accepts two keys and an amount to
// increment each of them by
import { createClient, defineScript } from 'redis';
async function luaMultiIncr() {
const client = createClient({
scripts: {
mincr: defineScript({
NUMBER_OF_KEYS: 2,
SCRIPT:
'return {' +
'redis.pcall("INCRBY", KEYS[1], ARGV[1]),' +
'redis.pcall("INCRBY", KEYS[2], ARGV[1])' +
'}',
transformArguments(key1, key2, increment) {
return [key1, key2, increment.toString()];
},
}),
},
});
await client.connect();
await client.set('mykey', '5');
console.log(await client.mincr('mykey', 'myotherkey', 10)); // [ 15, 10 ]
await client.quit();
}
luaMultiIncr();