快速入门 redis-cli

使用 redis-cli 的触发器和函数入门

Redis 堆栈 Redis 社区版 Redis 企业软件 Redis 云 Redis 社区版 适用于 Kubernetes 的 Redis Enterprise 客户

确保您已安装并运行 Redis Stack。或者,您可以创建一个免费的 Redis Cloud 帐户。触发器和函数预览版在 Google Cloud 亚太地区(东京)和 AWS 亚太地区(新加坡)区域的固定订阅计划中提供。

连接到 Redis 堆栈

> redis-cli -h 127.0.0.1 -p 6379

Load a library

Use the TFUNCION LOAD command to create a new library in your Redis instance.

127.0.0.1:6379> TFUNCTION LOAD "#!js api_version=1.0 name=myFirstLibrary\n redis.registerFunction('hello', ()=>{ return 'Hello World'})"
OK

When the library is created successfully, an OK response is returned. Run the TFUNCTION LIST command to confirm your library was added to Redis.

> TFUNCTION LIST
1) 1) "api_version"
   2) "1.0"
   3) "cluster_functions"
   4) (empty list or set)
   5) "configuration"
   6) "null"
   7) "engine"
   8) "js"
   9) "functions"
   10) 1) "hello"
   11) "keyspace_triggers"
   12) (empty list or set)
   13) "name"
   14) "myFirstLibrary"
   15) "pending_async_calls"
   16) (empty list or set)
   17) "pending_jobs"
   18) "0"
   19) "stream_triggers"
   20) (empty list or set)
   21) "user"
   22) "default"

The TFCALL command is used to execute the JavaScript Function. If the command fails, an error will be returned.

127.0.0.1:6379> TFCALL myFirstLibrary.hello 0
"Hello World"

To update the library run the TFUNCTION LOAD command with the additional parameter REPLACE.

127.0.0.1:6379> TFUNCTION LOAD REPLACE "#!js api_version=1.0 name=myFirstLibrary\n redis.registerFunction('hello', ()=>{ return 'Hello World updated'})"
OK

Uploading an external file

Use the redis-cli command to upload JavaScript from an external file. The file needs to contain the header, which contains the engine identifier, the API version, and the library name: #!js api_version=1.0 name=myFirstLibrary.

#!js api_version=1.0 name=lib

redis.registerFunction('hello', ()=> {
  return 'Hello from an external file'
})

Use the redis-cli -x option to send the file with the command and use the TFUNCTION LOAD REPLACE to replace the inline library with the one from the main.js file.

redis-cli -x TFUNCTION LOAD REPLACE < ./main.js

Creating triggers

Functions within Redis can respond to events using keyspace triggers. While the majority of these events are initiated by command invocations, they also include events that occur when a key expires or is removed from the database.

For the full list of supported events, please refer to the Redis keyspace notifications page.

The following code creates a new keyspace trigger that adds a new field to a new or updated hash with the latest update time.

Load the code in your database:

TFUNCTION LOAD REPLACE "#!js name=myFirstLibrary api_version=1.0\n 
    function addLastUpdatedField(client, data) {
        if(data.event == 'hset') {
            var currentDateTime = Date.now();
            client.call('hset', data.key, 'last_updated', currentDateTime.toString());
        }
    } 
    redis.registerKeySpaceTrigger('addLastUpdated', 'fellowship:', addLastUpdatedField);" // Register the KeySpaceTrigger 'AddLastUpdated' for keys with the prefix 'fellowship' with a callback to the function 'addLastUpdatedField'

Add a new hash with the required prefix to trigger our function.

127.0.0.1:6379> HSET fellowship:1 name "Frodo Baggins" title "The One Ring Bearer"

Check if the last updated time is added to the example.

127.0.0.1:6379> HGETALL fellowship:1
1) "name"
2) "Frodo Baggins"
3) "title"
4) "The One Ring Bearer"
5) "last_updated"
6) "1693238681822"
RATE THIS PAGE
Back to top ↑