使用 redis-cli 快速入门
开始使用 redis-cli 触发器和函数
Redis 开源 | Redis Enterprise 软件 | Redis 云 | Redis 开源 | Redis Enterprise for Kubernetes | 客户端 |
---|
确保您已安装并运行 Redis Stack。 或者,您可以创建一个免费的 Redis Cloud 帐户。 触发器和函数预览在 Google Cloud 亚太地区(东京)和 AWS 亚太地区(新加坡)区域的固定订阅计划中可用。
连接到 Redis Stack
> redis-cli -h 127.0.0.1 -p 6379
加载库
使用 TFUNCION LOAD
命令在您的 Redis 实例中创建一个新库。
127.0.0.1:6379> TFUNCTION LOAD "#!js api_version=1.0 name=myFirstLibrary\n redis.registerFunction('hello', ()=>{ return 'Hello World'})"
OK
如果成功创建库,将返回 OK
响应。 运行 TFUNCTION LIST
命令以确认您的库已添加到 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"
TFCALL
命令用于执行 JavaScript 函数。 如果命令失败,将返回一个错误。
127.0.0.1:6379> TFCALL myFirstLibrary.hello 0
"Hello World"
要更新库,请使用附加参数 REPLACE
运行 TFUNCTION LOAD
命令。
127.0.0.1:6379> TFUNCTION LOAD REPLACE "#!js api_version=1.0 name=myFirstLibrary\n redis.registerFunction('hello', ()=>{ return 'Hello World updated'})"
OK
上传外部文件
使用 redis-cli
命令从外部文件上传 JavaScript。 该文件需要包含标头,其中包含引擎标识符、API 版本和库名称:#!js api_version=1.0 name=myFirstLibrary
。
#!js api_version=1.0 name=lib
redis.registerFunction('hello', ()=> {
return 'Hello from an external file'
})
使用 redis-cli -x
选项通过命令发送文件,并使用 TFUNCTION LOAD REPLACE
将内联库替换为来自 main.js
文件的库。
redis-cli -x TFUNCTION LOAD REPLACE < ./main.js
创建触发器
Redis 中的函数可以使用键空间触发器来响应事件。 虽然大多数此类事件由命令调用发起,但它们也包括在键过期或从数据库中删除时发生的事件。
有关支持事件的完整列表,请参阅Redis 键空间通知页面。
以下代码创建一个新的键空间触发器,该触发器将一个新字段添加到具有最新更新时间的新建或更新的哈希中。
将代码加载到您的数据库中
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'
添加一个带有必需前缀的新哈希以触发我们的函数。
127.0.0.1:6379> HSET fellowship:1 name "Frodo Baggins" title "The One Ring Bearer"
检查是否已将上次更新时间添加到示例中。
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"