学习

RedisGears 是什么?#

RedisGears 是一个可编程的无服务器引擎,用于处理事务、批处理和事件驱动的数据,允许用户在存储于 Redis 中的数据上编写和运行自己的函数。

函数可以用不同的语言实现,包括 Python 和 C,并且可以通过 RedisGears 引擎以两种方式之一执行

  1. 1.批量: 由 Run 操作触发,立即执行并处理现有数据
  2. 2.事件: 由 Register 操作触发,在发生新事件时执行并处理其数据

RedisGears 可以执行的一些批量类型操作

  • 对 KeySpace 中的所有键或匹配特定模式的键执行操作,例如:
    • 为所有 KeyNames 添加前缀 person:
    • 删除所有值小于零的键
    • 将所有以 person: 开头的 KeyNames 写入一个集合
  • 对所有(或匹配的)键执行一系列操作,其中一个操作的输出是另一个操作的输入,例如
    • 查找所有带前缀 person: 的键(假设它们都是 hash 类型)
    • 将用户的 days_old 增加 1,然后按年龄组(10-20、20-30 等)求和
    • 将今天的统计数据添加到每个客户端的有序集合中,计算过去 7 天的平均值并将计算结果保存在一个字符串中

RedisGears 可以执行的一些事件类型操作

  • RedisGears 还可以注册事件监听器,每次受监控的键发生变化时触发函数执行,例如
    • 监听 KeySpace 中所有键上的所有操作,并维护所有 KeyNames 的列表
    • 监听带有前缀 I-AM-IMPORTANT: 的键上的 DEL 操作,并异步将它们转储到“已删除键”日志文件中
    • 监听带有前缀 player: 的键的元素得分上的所有 HINCRBY 操作,并在得分达到 1000 时同步更新用户的级别

如何使用 RedisGears?#

运行 Docker 容器

docker run -p 6379:6379 redislabs/redisgears:latest

对于一个非常简单的示例,它列出您的 Redis 数据库中所有带有前缀 person: 的键,请创建以下 python 脚本并将其命名为 hello_gears.py :

gb = GearsBuilder() gb.run('person:*')

执行您的函数

docker exec -i redisgears redis-cli RG.PYEXECUTE "`cat hello_gears.py`"

使用 gears-cli#

gears-cli 工具提供了一种更简单的方式来执行 RedisGears 函数,特别是当您需要传递一些参数时。

它用 Python 编写,可以通过 pip 安装

pip install gears-cli
gears-cli hello_gears.py REQUIREMENTS rgsync

用法

gears-cli --help
usage: gears-cli [-h] [--host HOST] [--port PORT]
[--requirements REQUIREMENTS] [--password PASSWORD] path [extra_args [extra_args ...]]

RedisGears 参考资料#