已知限制
已知限制概述
Redis 堆栈 | Redis 社区版 | Redis 企业软件 | Redis 云 | Redis 社区版 | 适用于 Kubernetes 的 Redis Enterprise | 客户 |
---|
有限的写入选项
JavaScript 远程函数仅限于读取作。任何尝试在与执行函数不同的分片上执行以下函数的写入作都将导致错误。
async_client.runOnShards
在所有分片上运行 remote 函数async_client.runOnKey
在负责给定键的分片上运行 remote 函数
此外,使用任何可用方法注册的 JavaScript 函数执行的键空间修改应在本地执行写入作:
- 如果函数注册为
registerFunction
或registerAsyncFunction
,它可以插入、修改或删除执行函数的同一分片中的键。 - 如果函数注册为
registerKeySpaceTrigger
或registerStreamTrigger
,键空间修改必须是发起事件的分片的本地修改。
此外,还建议将要修改的键放在与发起事件的键或 Stream 相同的哈希槽中。例如,如果存储在 Hashmyserv:user:1234
可能会发生变化,并且我们想在外部计数器中计算它们,我们将使用哈希标签来命名计数器:{myserv:user:1234}:cnt
.
对密钥空间的独占访问
根据设计,异步函数保证了对密钥空间的独占单线程访问,这是 Redis 的显著特性。在使用 JavaScript 函数的异步编程中,以读或写模式访问键空间必须是阻塞的,而如果不访问键空间,则执行可能是非阻塞的。此实现保持与 Redis 标准命令或 Lua 脚本和函数相同级别的数据一致性,但利用了异步执行,这是 JavaScript 引擎的一项功能。
JavaScript 变量
并非所有 JavaScript 全局变量都可以由 Redis 加载的 JavaScript 引擎使用(例如console
,document
).这redis
全局变量可用于管理函数注册、日志记录等。
沙盒
此功能是沙盒的,这意味着,无法从函数中调用外部服务,包括其他 Redis 数据库或 API。