JavaScript API
JavaScript API 概述
Redis 开源 | Redis Enterprise Software | Redis 云 | Redis 开源 | Redis Enterprise for Kubernetes | 客户端 |
---|
Redis 对象
- 自版本: 2.0.0
触发器和函数 JavaScript API 提供一个名为 redis 的对象的单例实例。redis 实例使注册的函数能够与运行它们的 Redis 服务器交互。以下是 redis 实例提供的 API。
redis.registerFunction
- 自版本: 2.0.0
注册一个可以使用 TFCALL
命令调用的新函数。
//name and callback mandatory
//object with optional arguments
redis.registerFunction(
'foo', //name
function(client, args) {}, //callback
{
description: 'The description',
flags: [redis.functionFlags.NO_WRITES, redis.functionFlags.ALLOW_OOM]
} // optional arguments
);
redis.registerAsyncFunction
- 自版本: 2.0.0
注册一个可以使用 TFCALLASYNC
命令调用的新异步函数。
redis.registerAsyncFunction(
'foo', //Function name
function(client, args){}, //callback
{
description: 'description',
flags: [redis.functionFlags.NO_WRITES, redis.functionFlags.ALLOW_OOM]
} //optional arguments
);
redis.registerKeySpaceTrigger
- 自版本: 2.0.0
注册一个键空间通知触发器,该触发器将在每次触发键空间通知时运行。
redis.registerKeySpaceTrigger(
'foo', // trigger name
'keys:*', //key prefix
function(client, data) {}, //callback
{
description: 'description'
onTriggerFired: function(client, data){}
} //optional arguments
)
redis.registerStreamTrigger
- 自版本: 2.0.0
注册一个流触发器,该触发器将在每次将数据添加到流时调用。
redis.registerStreamTrigger(
'foo', //trigger name
'stream:*', //prefix
function(client, data){},//callback
{
description: 'Description'
window: 1,
isStreamTrimmed: false
} //optional arguments
)
redis.registerClusterFunction
- 自版本: 2.0.0
注册一个可以使用 async_client.runOnKey()
或 async_client.runOnShards()
调用的集群函数。
redis.registerClusterFunction(
'foo', //name
async function(client, ...args){} //callback
)
redis.config
- 自版本: 2.0.0
redis-cli -x RG.FUNCTION LOAD UPGRADE CONFIG '{"example_config": "example_config_value"}' < main.js
var configExample = redis.config.example_config;
客户端对象
用于在 Redis 上执行操作的客户端对象。
client.call
- 自版本: 2.0.0
在 Redis 上运行命令。该命令在当前的 Redis 实例上执行。
client.call(
'',
...args
)
client.callRaw
- 自版本: 2.0.0
在 Redis 上运行命令,但不执行对结果的 UTF8 解码。该命令在当前的 Redis 实例上执行。
client.callRaw(
'',
...args
)
client.callAsync
- 自版本: 2.0.0
在 Redis 上调用命令。允许 Redis 阻止执行(如 blpop
命令)并异步返回结果。返回一个 promise 对象,该对象将在命令调用完成后得到解决。
client.callAsync(
'',
...args
)
client.callAsyncRaw
- 自版本: 2.0.0
在 Redis 上调用命令。允许 Redis 阻止执行(如 blpop
命令)并异步返回结果。返回一个 promise 对象,该对象将在命令调用完成后得到解决。该命令在当前的 Redis 实例上执行。
client.callRaw(
'',
...args
)
client.isBlockAllowed
- 自版本: 2.0.0
如果允许从函数回调返回 promise,则返回 true。如果允许并且返回了 promise,Redis 将等待 promise 被履行,然后才会返回函数结果。
client.isBlockAllowed(); // True / False
client.executeAsync
- 自版本: 2.0.0
异步执行给定的函数。返回一个 promise,该 promise 将在 promise 被解决/拒绝时履行。
client.executeAsync(
async function(client){}
)
异步客户端对象
用于在 Redis 上执行后台操作的后台客户端对象。此客户端被赋予作为 JS 协程运行的任何后台任务。
async_client.block
- 自版本: 2.0.0
阻止 Redis 进行命令调用。在给定函数内部执行的所有命令都被认为是原子的,并将被 Multi/Exec
包裹并发送到副本/AOF。
async_client.block(
function(client){}
)
async_client.runOnKey
- 自版本: 2.0.0
在给定的键上运行远程函数。如果键位于我们当前运行的分片上,则远程函数将立即运行。否则,远程函数将在远程分片上运行。返回一个 promise,该 promise 将在调用完成时履行。请注意,远程函数必须返回 json 可序列化的结果,以便我们可以将结果序列化回原始分片。
请注意,远程函数只能执行读取操作,不允许写入。
async_client.runOnKey(
'key1', // key
'foo', // function name
...args
)
async_client.runOnShards
- 自版本: 2.0.0
在所有分片上运行远程函数。返回一个 promise,该 promise 将在所有分片上的调用完成时履行。
结果是一个包含 2 个元素的数组,第一个是所有结果的另一个数组。第二个是调用过程中发生的所有错误的数组。请注意,远程函数必须返回 json 可序列化的结果,以便我们可以将结果序列化回原始分片。
请注意,远程函数只能执行读取操作,不允许写入。
async_client.runOnShards(
'foo', //name
...args //arguments
)