Skip to content

RedisGears/RedisGears-2.0

Repository files navigation

RedisGears-2.0

A Redis module that allows running a JS functions inside the Redis processes.

Getting started

Pre-requisite

  1. rust
  2. Redis v7.0.3 or above

Compile

Run the following on the main directoty:

> cargo build

Run

Run the following on the main directoty:

> ./run.sh

Run JS code

The API expose by the module is very similar to the way Redis Functions is working. Lets write a simple hello world RedisGears function that return the string hello world:

#!js name=lib

redis.register_function('hello_world', function(){
    return 'hello_world';
});

The first line indicates the engine to use (js) and the library name (lib). The rest is the library code.

Assuming we put the following code on a file lib.js, we can register our function on RedisGears using RG.FUNCTION LOAD command:

> redis-cli -x RG.FUNCTION LOAD < ./lib.js
OK

And now we can execute our function using RG.FUNCTION CALL command, the command gets the library name and the function name:

> redis-cli RG.FUNCTION CALL lib hello_world
"hello_world"

Calling Redis Commands Inside our Gears Function

It is possible to call Redis commands inside our gears function. The function gets as first argument a client object that allows interaction with Redis using call function. The following example executes a simple PING command and return the result:

#!js name=lib

redis.register_function('my_ping', function(client){
    return client.call('ping');
});

If we will try to send it to our running Redis instance, we will get the following error:

> redis-cli -x RG.FUNCTION LOAD < ./lib.js
(error) Library lib already exists

We get the error because the library with the same name already exists, we can use the UPGRADE argument to upgrade the library with the new code:

> redis-cli -x RG.FUNCTION LOAD UPGRADE < ./lib.js
OK

And now we can invoke my_ping using RG.FUNCTION CALL:

> redis-cli RG.FUNCTION CALL lib my_ping
"PONG"

Whats next?

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published