学习

什么是 RedisGears?#

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

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

  1. 1.批处理:由 Run 操作触发,执行是立即的,并且在现有数据上进行
  2. 2.事件:由 Register 操作触发,执行由新事件及其数据触发

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

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

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

  • RedisGears 还可以注册事件监听器,这些监听器会在每次监视的键发生变化时触发函数执行,例如
    • 监听对所有键的所有操作,并在 KeySpace 中保留所有 KeyName 的列表
    • 监听对前缀为 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 参考#