视频

了解更多
RedisGears 2.0 的功能之一是 V8 JavaScript 引擎。 您可以在 RedisGears 2.0 中进行实验。 以下是预期的情况。
Redis 以其易用性、低延迟以及公司致力于改进产品特性和代码质量而闻名。 例如,我们添加了脚本和函数,以便程序员可以在数据库中执行业务逻辑,触发器由外部服务或用户调用。 现在是时候添加更多内容了。
借助RedisGears中的触发函数,您可以注册对 Redis 键空间通知做出反应的业务逻辑。 触发函数类似于在发生特定操作时(例如更改数据时)运行的存储过程。 当发生添加键值之类的事件时,会触发执行。 触发函数和用户定义函数之间的区别在于,触发器会在发生触发事件时自动调用。
RedisGears 将业务逻辑的触发和执行引入到您的数据库中,因此无需在多个服务和应用程序中复制。 这些函数以同步方式执行,且没有延迟。
例如,当在电子商务应用程序中下订单时,RedisGears 可以对更改的数据做出反应,并更新库存中可用商品的数量。 或者,当数据库从多个应用程序接收数据时,开发人员可以将转换逻辑嵌入到 RedisGears 中以规范化数据。 这可确保所有这些馈送器应用程序应用完全相同的逻辑。 一致性是一件好事,尤其是在代码维护方面。
在 RedisGears 2.0 的第二个里程碑版本中,我们引入了对 V8 JavaScript 引擎的支持。V8 是 Google 的开源高性能 JavaScript 和 WebAssembly 引擎,用 C++ 编写。 一旦正式发布 (GA),此 JavaScript 引擎将在 Redis Cloud 中提供,并将成为 Redis Stack 的一部分。 它将默认使 Redis Cloud 实例可以使用触发函数。
V8 使您可以使用 Redis 在数据所在的位置运行代码,而无需使用 JavaScript 产生网络开销。 在接下来的几周内,我们将发布多篇博客文章,介绍 RedisGears 的新功能和概念,因为我们正在努力实现 RedisGears 2.0 的正式发布。
最初的里程碑版本侧重于在数据库触发器上执行的函数,以便您的代码可以在 Redis 触发事件时做出反应。 最有可能触发函数的常见事件是Redis 键空间通知。 但它的用途远不止于此; Redis Stack 中的大多数高级数据结构也会发布它们的事件。
有两个特殊事件并非总是由命令触发
要部署函数,开发人员提供单个 JavaScript 文件。 这对于小型项目来说很容易,但随着项目增长变得更加复杂,维护起来会变得更加困难。 幸运的是,JavaScript 社区拥有出色的部署工具,如关于如何为 RedisGears2.0 设置 webpack 的教程中所述。
请确保您使用的 JavaScript 库与 V8 引擎兼容。浏览器和 nodejs 特定的全局对象在 V8 引擎中不可用。
我们从典型的 Hello World 示例开始。 我们使用一个简单的脚本,其中包含shebang (#!),该 shebang 定义了库名称和一个定义逻辑的函数。
#!js name=lib
redis.register_function('hello_world', function(){
return 'hello_world';
});
现在,将该数据加载到 Redis 中
> redis-cli -x RG.FUNCTION LOAD < ./example.js
并使用库和方法名称执行它
> redis-cli RG.FCALL lib hello_world
我们需要向 Redis 注册一个通知使用者,软件才能对数据库事件中的函数做出反应。
使用者需要三个参数
回调函数可以包含两个参数
当 key_raw 可以解码为字符串时,key_raw 为触发事件的键提供了一个 ArrayBuffer,则填充 key。 事件类型在 event_name 中返回。
完整的签名如下所示
redis.register_notifications_consumer(‘consumer_example_name’, ‘keyprefix’, function(client, data){
// function logic
});
要在所有更改上运行函数,我们在 keyprefix 中包含一个空字符串。
redis.register_notifications_consumer(‘consumer_add_version’, ‘’, function(client, data) {
if(client.call(‘type’, data.key) != ‘hash’) {
return;
}
client.call(‘hincrby’, data.key, ‘__version__’, 1);
});
在此示例中,我们确保该事件是为 hash 数据类型触发的。 如果不是,我们停止该函数。 如果它是 hash 数据类型,我们使用 hincrby 命令来创建或递增哈希上的 version 属性的值。
这表明我们可以从触发该函数的键和命令中检索信息,并在 RedisGears 函数中执行 Redis 命令。
需要 Redis v7.0.3 或更高版本才能开始使用 RedisGears2.0。 Docker 镜像可用,因此您可以立即开始使用它。
docker pull redislabs/redisgears:edge
docker run -p 6379:6379 redislabs/redisgears:edge
如果您在里程碑版本中遇到问题或潜在的改进,请通过 RedisGears GitHub 存储库与我们联系。 我们想了解您的体验!
免费体验 Redis Enterprise Cloud。