diff --git a/README.md b/README.md index 63fe9d2a522..16c49151f7c 100644 --- a/README.md +++ b/README.md @@ -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 { - return [key, number.toString()]; + return [key, toAdd.toString()]; }, transformReply(reply: number): number { return reply; diff --git a/examples/README.md b/examples/README.md index ecb84a69f80..89e1f183db7 100644 --- a/examples/README.md +++ b/examples/README.md @@ -2,9 +2,10 @@ 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 | +| 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 diff --git a/examples/lua-multi-incr.js b/examples/lua-multi-incr.js new file mode 100644 index 00000000000..ec433c27ea2 --- /dev/null +++ b/examples/lua-multi-incr.js @@ -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();