已知限制

已知限制概述

Redis 开源 Redis Enterprise 软件 Redis Cloud Redis 开源 Redis Enterprise for Kubernetes 客户端

有限的写入选项

JavaScript 远程函数仅限于**读取操作**。 任何尝试在与执行该函数的分片不同的分片上执行以下函数的写入操作都会导致错误。

  • async_client.runOnShards 在所有分片上运行远程函数
  • async_client.runOnKey 在负责给定键的分片上运行远程函数

此外,使用任何可用方法注册的 JavaScript 函数执行的键空间修改应在本地执行写入操作

  • 如果函数使用 registerFunctionregisterAsyncFunction 注册,则它可以插入、修改或删除与函数执行在同一分片中的键。
  • 如果函数使用 registerKeySpaceTriggerregisterStreamTrigger 注册,则键空间修改必须位于事件发源的分片本地。

还建议将要修改的键与发起事件的键或流放在同一个哈希槽中。 例如,如果存储在 Hash myserv:user:1234 中的用户配置文件发生更改,并且我们想在外部计数器中对其进行计数,我们将使用哈希标签命名计数器:{myserv:user:1234}:cnt

对键的独占访问

按照设计,异步函数保证对键的独占单线程访问,这是 Redis 的独特功能。 在使用 JavaScript 函数进行异步编程时,以读取或写入模式访问键空间必须是阻塞的,而如果不访问键空间,则执行可能是非阻塞的。 此实现保持与 Redis 标准命令或 Lua 脚本和函数相同级别的数据一致性,但利用了异步执行,这是 JavaScript 引擎的一项功能。

JavaScript 变量

并非所有 JavaScript 全局变量都可由 Redis 加载的 JavaScript 引擎使用(例如,consoledocument)。 redis 全局变量可用于管理函数注册、日志记录等。

沙盒化

此功能是沙盒化的,这意味着从函数内部无法调用外部服务,包括其他 Redis 数据库或 API。

为此页面评分
返回顶部 ↑