JavaScript API

JavaScript API 概述

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 命令),并异步返回结果。返回一个承诺对象,该对象将在命令调用完成后解决。

client.callAsync(
  '',
  ...args
)

client.callAsyncRaw

  • 自版本:2.0.0

在 Redis 上调用命令。允许 Redis 在需要时阻塞执行(如 blpop 命令),并异步返回结果。返回一个承诺对象,该对象将在命令调用完成后解决。命令在当前 Redis 实例上执行。

client.callRaw(
  '',
  ...args
)

client.isBlockAllowed

  • 自版本:2.0.0

如果允许从函数回调返回承诺,则返回 true。如果允许且返回承诺,Redis 将等待承诺完成,然后才会返回函数结果。

client.isBlockAllowed(); // True / False

client.executeAsync

  • 自版本:2.0.0

异步执行给定的函数。返回一个承诺,该承诺将在承诺解决/拒绝时完成。

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

在给定键上运行远程函数。如果键位于我们当前运行的当前分片上,则远程函数将立即运行。否则,远程函数将在远程分片上运行。返回一个承诺,该承诺将在调用完成后完成。请注意,远程函数必须返回一个可 JSON 序列化的结果,以便我们可以将结果序列化回原始分片。

请注意,远程函数只能执行读取操作,不允许写入操作。

async_client.runOnKey(
  'key1', // key
  'foo', // function name
  ...args
)

async_client.runOnShards

  • 自版本:2.0.0

在所有分片上运行远程函数。返回一个承诺,该承诺将在所有分片上的调用完成后完成。

结果是一个包含两个元素的数组,第一个是所有结果的另一个数组。第二个是调用期间发生的错误的数组。请注意,远程函数必须返回一个可 JSON 序列化的结果,以便我们可以将结果序列化回原始分片。

请注意,远程函数只能执行读取操作,不允许写入操作。

async_client.runOnShards(
  'foo', //name
  ...args //arguments
)
RATE THIS PAGE
Back to top ↑