@@ -25,16 +25,22 @@ FUNCTION LOAD "#!lua name=library\nredis.register_function{function_name='add',
25
25
Load the prior redis function on the _ redis server_ before running the example below.
26
26
27
27
``` typescript
28
- import { createClient } from ' redis' ;
28
+ import { CommandParser } from ' @redis/client/lib/client/parser' ;
29
+ import { NumberReply } from ' @redis/client/lib/RESP/types' ;
30
+ import { createClient , RedisArgument } from ' redis' ;
29
31
30
32
const client = createClient ({
31
33
functions: {
32
34
library: {
33
35
add: {
34
36
NUMBER_OF_KEYS: 1 ,
35
- FIRST_KEY_INDEX: 1 ,
36
- transformArguments(key : string , toAdd : number ): Array <string > {
37
- return [key , toAdd .toString ()];
37
+ parseCommand(
38
+ parser : CommandParser ,
39
+ key : RedisArgument ,
40
+ toAdd : RedisArgument
41
+ ) {
42
+ parser .pushKey (key )
43
+ parser .push (toAdd )
38
44
},
39
45
transformReply: undefined as unknown as () => NumberReply
40
46
}
@@ -43,34 +49,39 @@ const client = createClient({
43
49
});
44
50
45
51
await client .connect ();
46
-
47
52
await client .set (' key' , ' 1' );
48
- await client .library .add (' key' , 2 ); // 3
53
+ await client .library .add (' key' , ' 2 ' ); // 3
49
54
```
50
55
51
56
## [ Lua Scripts] ( https://redis.io/docs/manual/programmability/eval-intro/ )
52
57
53
58
The following is an end-to-end example of the prior concept.
54
59
55
60
``` typescript
56
- import { createClient , defineScript , NumberReply } from ' redis' ;
61
+ import { CommandParser } from ' @redis/client/lib/client/parser' ;
62
+ import { NumberReply } from ' @redis/client/lib/RESP/types' ;
63
+ import { createClient , defineScript , RedisArgument } from ' redis' ;
57
64
58
65
const client = createClient ({
59
66
scripts: {
60
67
add: defineScript ({
61
68
SCRIPT: ' return redis.call("GET", KEYS[1]) + ARGV[1];' ,
62
69
NUMBER_OF_KEYS: 1 ,
63
70
FIRST_KEY_INDEX: 1 ,
64
- transformArguments(key : string , toAdd : number ): Array <string > {
65
- return [key , toAdd .toString ()];
71
+ parseCommand(
72
+ parser : CommandParser ,
73
+ key : RedisArgument ,
74
+ toAdd : RedisArgument
75
+ ) {
76
+ parser .pushKey (key )
77
+ parser .push (toAdd )
66
78
},
67
79
transformReply: undefined as unknown as () => NumberReply
68
80
})
69
81
}
70
82
});
71
83
72
84
await client .connect ();
73
-
74
85
await client .set (' key' , ' 1' );
75
- await client .add (' key' , 2 ); // 3
86
+ await client .add (' key' , ' 2 ' ); // 3
76
87
```
0 commit comments