在 Redis Enterprise 中启用可扩展的 Redis 查询引擎

在 Redis Enterprise 中启用可扩展的 Redis 查询引擎以提高查询性能。

Redis 查询引擎是一项旨在提高查询性能的功能,包括矢量搜索。启用后,除了通过添加更多分片进行横向扩展之外,你还可以通过为每个分片分配更多虚拟 CPU 来提高数据库的计算能力和吞吐量。本文档介绍了如何配置 Redis 查询引擎。

注意
某些用例可能无法有效扩展。Redis 专家可以帮助确定使用 Redis 查询引擎进行垂直扩展是否会提升你用例的性能,并指导你选择进行垂直扩展、水平扩展还是同时进行。

先决条件

Redis 查询引擎要求集群运行 Redis Enterprise Software 版本 7.4.2-54 或更高版本。

如果你没有支持 Redis 查询引擎的集群,请在新的集群上安装 Redis Enterprise Software版本 7.4.2-54 或更高版本,或升级现有集群

调整大小

  1. 计算 Redis 数据库的硬件要求

    1. 使用硬件要求文档推导整体集群架构。

    2. 使用索引大小计算器计算 RAM 要求。所需的总 RAM 是数据集和索引大小的总和。

  2. 确定所需的扩展因子和所需的 CPU 数量。超过 Redis 所需 20% 以上的闲置 CPU 可用于可扩展的 Redis 查询引擎。

  3. 使用为可扩展的 Redis 查询引擎配置的 CPU 数量新建一个 Redis 数据库。

计算扩展因子

Redis 查询引擎的 CPU

通过为搜索模块预置其他 CPU 来实现 Redis 查询引擎的垂直扩展。至少 20% 的可用 CPU 必须用于 Redis 内部处理。使用以下公式来定义可分配给搜索的最大 CPU 数量。

变量
每节点的 CPU x
Redis 内部 20%
Redis 查询引擎可用的 CPU floor(0.8 * x)

扩展因子与 CPU

下表显示了每个扩展因子所需的 CPU 数量。此计算对如何定义搜索索引和查询很敏感。某些情况下,吞吐量可能低于下表中的比率。

缩放因数 Redis 查询引擎所需的最低 CPU
无(默认) 1
2 3
4 6
6 9
8 12
10 15
12 18
14 21
16 24

缩放因数计算示例

变量
每节点的 CPU 8
可用 CPU 向下取整(0.8 * 8)=6
缩放因数 4x
缩放因数所需的最低 CPU 6

启用可扩展 Redis Query Engine

要在 Redis Enterprise 中启用可缩放的 Redis 查询引擎,请使用 REST API 新建数据库或更新现有数据库。

新建物流库

要新建启用可缩放 Redis 查询引擎的数据库,请使用 创建数据库 REST API 终端节点,该数据库使用一个 BDB 对象,其中包括以下参数

{
    "sched_policy": "mnp",
    "conns": 32,
    "module_list": [{
        "module_name": "search",
        "module_args": "MT_MODE MT_MODE_FULL WORKER_THREADS <NUMBER_OF_CPUS>"
    }]
}

参阅 计算缩放因数 以确定要用于 <NUMBER_OF_CPUS>的值。

新建数据库的 REST API 请求示例

以下 JSON 是用于创建一个启用了可缩放 Redis 查询引擎的新数据库的示例请求包正文

{
    "name": "scalable-search-db",
    "type": "redis",
    "memory_size": 10000000,
    "port": 13000,
    "authentication_redis_pass": "<your default db pwd>",
    "proxy_policy": "all-master-shards",
    "sched_policy": "mnp",
    "conns": 32,
    "sharding": true,
    "shards_count": 3,
    "shards_placement": "sparse",
    "shard_key_regex": [{"regex": ".*\\{(?<tag>.*)\\}.*"}, {"regex": "(?<tag>.*)"}],
    "replication": false,
    "module_list": [{
        "module_name": "search",
        "module_args": "MT_MODE MT_MODE_FULL WORKER_THREADS 6"
    }]
}

从 JSON 示例创建新数据库的 cURL 请求如下

curl -k -u "<user>:<password>" https://<host>:9443/v1/bdbs -H "Content-Type:application/json" -d @scalable-search-db.json

更新现有数据库

要为现有数据库启用可缩放的 Redis 查询引擎,请使用以下 REST API 请求

注意
由于此过程还会重新启动数据库分片,因此您应在维护期间执行此过程。

以下示例脚本使用两个终端节点来配置 4x 缩放因数

#!/bin/bash
export DB_ID=1
export CPU=6
export MODULE_ID=`curl -s -k -u "<user>:<password>" https://<host>:9443/v1/bdbs/$DB_ID | jq '.module_list[] | select(.module_name=="search").module_id' | tr -d '"'`

curl -o /dev/null -s -k -u "<user>:<password>" -X PUT https://<host>:9443/v1/bdbs/$DB_ID -H "Content-Type:application/json" -d '{
    "sched_policy": "mnp",
    "conns": 32
}'

sleep 1

curl -o /dev/null -s -k -u "<user>:<password>" https://<host>:9443/v1/bdbs/$DB_ID/modules/upgrade -H "Content-Type:application/json" -d '{
    "modules": [
      {
        "module_name": "search",
        "new_module_args": "MT_MODE MT_MODE_FULL WORKER_THREADS '$CPU'",
        "current_module": "'$MODULE_ID'",
        "new_module": "'$MODULE_ID'"
      }
    ]
}'

监控 Redis 查询引擎

要监控已启用可缩放 Redis 查询引擎的数据库

  1. 将您的 Redis Enterprise 部署与 Prometheus 集成。有关说明,请参阅 与 Redis Enterprise 集成的 Prometheus 和 Grafana

  2. 监控 redis_process_cpu_usage_percent 分片指标。

    以下 Prometheus UI 屏幕截图显示了有两个分片的数据库的 redis_process_cpu_usage_percent 飙升

    • 第一个 100% 飙升:memtier_benchmark搜索测试采用默认缩放因子(每个分片 1 个 CPU,用于搜索)。

    • 第二个 100% 飙升:针对 4x 缩放因数进行重新配置和分片重启。

    • 第三个 600% 飙升:memtier_benchmark 多线程搜索测试采用 4x 缩放因数(每个分片 6 个 CPU)。

    The Prometheus graph shows three spikes for redis_process_cpu_usage_percent: 100%, another 100%, then 600%.
RATE THIS PAGE
Back to top ↑