在 Redis Enterprise 中启用可扩展的 Redis 查询引擎
在 Redis Enterprise 中启用可扩展的 Redis 查询引擎以提高查询性能。
Redis 查询引擎是一项旨在提高查询性能的功能,包括矢量搜索。启用后,除了通过添加更多分片进行横向扩展之外,你还可以通过为每个分片分配更多虚拟 CPU 来提高数据库的计算能力和吞吐量。本文档介绍了如何配置 Redis 查询引擎。
先决条件
Redis 查询引擎要求集群运行 Redis Enterprise Software 版本 7.4.2-54 或更高版本。
如果你没有支持 Redis 查询引擎的集群,请在新的集群上安装 Redis Enterprise Software版本 7.4.2-54 或更高版本,或升级现有集群。
调整大小
-
计算 Redis 数据库的硬件要求
-
确定所需的扩展因子和所需的 CPU 数量。超过 Redis 所需 20% 以上的闲置 CPU 可用于可扩展的 Redis 查询引擎。
-
使用为可扩展的 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 查询引擎的数据库
-
将您的 Redis Enterprise 部署与 Prometheus 集成。有关说明,请参阅 与 Redis Enterprise 集成的 Prometheus 和 Grafana。
-
监控
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)。
-