1. Redis Module简述
在人工智能(AI)技术快速落地的今天,开发者面临着模型部署效率、实时推理性能与数据基础设施融合的多重挑战。Redis作为高性能内存数据库,通过RedisML、RedisSearch、Neural-Redis模块等及其AI生态工具,为实时智能场景提供了独特的技术解决方案。本文深度解析Redis中AI模块的技术特性与应用实践。- 扩展性:无需修改 Redis 源码即可添加新功能。
- 高性能:模块直接与 Redis 内存数据交互,保持原生性能优势。
- 生态丰富:社区和官方提供了多种成熟模块,覆盖搜索、AI、时间序列等场景。
了解现有的Redis Modules请访问:https://redislabs.com/community/redis-modules-hub/2. Redis中AI相关模块及其应用场景
Redis 生态中常用的核心模块及其典型应用案例: RediSearch 是 Redis Labs 提供的一个模块,旨在为 Redis 增加强大的搜索和索引功能。它的设计目标是提供高效、实时的搜索引擎功能,同时保留 Redis 的高性能特性。与传统的全文搜索引擎(如 Elasticsearch、Solr)相比,RediSearch 具有极高的查询响应速度,并且在 Redis 的环境中直接运行,可以极大地减少搜索延迟。2.1.1 原理
2.1.2 核心特性
- 支持多种使用UTF-8编码的语言,支持多种数据类型
2.1.3 基本操作
通过 FT.CREATE 命令,可以为一个或多个字段创建索引。FT.CREATE <index_name> [schema_definition]
说明:<index_name>:索引的名称
[schema_definition]:定义索引字段和字段类型的模式
# 示例:
FT.CREATE products_idx ON HASH PREFIX 1 product: SCHEMA name TEXT price NUMERIC
说明 :
命令创建了一个名为 products_idx 的索引。
哈希键以 product: 前缀开头的数据创建一个索引
索引字段包括:name(文本类型)price(数字类型)
向 Redis 中插入数据通常通过 HSET 命令进行,RediSearch 会自动为这些数据创建索引。HSET product:1 name "Smartphone" price 599
HSET product:2 name "Laptop" price 1299
说明:插入了两条产品数据,RediSearch 会自动为这些数据建立索引
3. 执行搜索 (FT.SEARCH)
FT.SEARCH 命令用于根据索引执行全文搜索,允许通过指定查询条件来检索文档。FT.SEARCH <index_name> <query> [optional_parameters]
说明:<index_name>:索引名称。
<query>:查询条件,可以包含关键词、布尔操作符等。
FT.SEARCH products_idx "Smartphone"
说明:在 products_idx 索引中搜索包含关键词 "Smartphone" 的文档
4. 过滤和排序、聚合和分面查询 (FT.AGGREGATE)等功能FT.SEARCH products_idx "Laptop" SORTBY price ASC
说明:在 products_idx 索引中搜索关键词 "Laptop" 的文档,并按 price 字段升序排序。
聚合和分面查询 (FT.AGGREGATE),允许对数据进行统计分析和分面查询。FT.AGGREGATE products_idx * GROUPBY 1 @price REDUCE AVG 0 AS avg_price
说明:计算所有产品的平均价格。
FT.DROPINDEX products_idx
2.1.4 应用场景
- 电商平台:可以用来为商品提供全文搜索、过滤、排序和推荐等功能。
- 日志分析:RediSearch 能够对日志数据进行全文搜索,帮助快速定位日志中的关键信息。
- 社交媒体:支持对用户生成的内容进行搜索,并通过关键词、标签等进行精确筛选。
- 推荐系统:可以结合其他 Redis 模块(如 RedisAI)对数据进行聚合分析和个性化推荐
命令文档:https://oss.redislabs.com/redisearch/Commands/2.2 RedisML
RedisML 是 Redis Labs 提供的模块,旨在将机器学习任务与 Redis 高效地结合。它的主要目的是让开发人员能够在 Redis 中存储、训练和执行机器学习模型,并通过 Redis 的数据存储和高并发处理能力,提供实时的预测和分析服务。RedisML 通过在 Redis 内部实现多种 ML 算法,支持训练、推理、评估等功能。2.2.1 原理
1. 数据输入:训练数据可以通过 Redis 键值对的形式存储在 Redis 中,通常是以数组或矩阵的形式存储。例如,输入特征(X)和目标标签(Y)可以通过 SET
命令存储:SET X_train [1, 2, 3, 4] SET Y_train [0, 1, 0, 1]
2. 训练数据准备:数据准备好后,通过 RedisML 提供的特定命令(如 ML.TRAIN
)来进行模型训练。RedisML 模块会使用存储的数据(如 X_train
和 Y_train
)来训练指定的机器学习模型。RedisML 会根据选定的算法在 Redis 内部对数据进行处理。当训练完成后,模型会被存储为 Redis 中的一个对象,可以通过类似 GET
命令来检索模型。通过命令 ML.PREDICT
,用户可以将新的数据(X_test
)传入模型中进行推理,得到预测结果。2.2.2 核心功能
- 机器学习模型训练:基于多种算法(如线性回归、逻辑回归、K-Means 聚类、决策树等)的模型训练
- 推理和预测:对存储的模型进行实时推理和预测,特别适合低延迟的应用需求
- 多种模型存储格式:将训练好的机器学习模型(包括支持的所有算法的模型)以标准格式(如 R、Python、HDF5 格式)存储在 Redis 中。
- 算法支持:提供了多种常见的机器学习算法,包括:线性回归(Linear Regression)逻辑回归(Logistic Regression)K-均值聚类(K-Means)决策树(Decision Trees)随机森林(Random Forests)支持向量机(SVM)
- 性能优化:由于 Redis 本身具有极高的读写性能,RedisML 也可以利用 Redis 的内存存储和高并发处理能力,提供低延迟、高吞吐量的机器学习服务。
2.2.3 基本操作:
- 训练模型 (ML.TRAIN)
ML.TRAIN 命令用于在 Redis 中训练模型,训练数据(通常是 X_train 和 Y_train)以及模型类型(如线性回归、逻辑回归等)。
ML.TRAIN <model_type> <model_name> <X_data_key> <Y_data_key> [options]
model_name:训练后生成的模型名称(keyname)
X_data_key:存储训练数据特征的 (keyname)
Y_data_key:存储训练数据标签的(keyname)
options:可选参数,如正则化参数等。
ML.TRAIN linear_regression my_model X_train Y_train
ML.PREDICT <model_name> <X_data_key>
- 训练数据和模型格式
训练数据通常是数值型的数组或矩阵,RedisML 以 Redis 键值对的形式存储这些数据。以下是一些常见的操作示例。
存储训练数据:可以通过 Redis 的标准命令将训练数据存储为键值对。例如:SET X_train [1, 2, 3, 4, 5]
SET Y_train [0, 1, 0, 1, 0]
线性回归 (linear_regression):用于预测连续的数值结果。
逻辑回归 (logistic_regression):用于二分类问题(如判断一个事件的发生与否)。
K-均值聚类 (kmeans):用于无监督学习任务,进行数据聚类。
决策树 (decision_tree):用于分类和回归任务。- 训练与推理示例
示例 :线性回归 假设你已经有了训练数据 X_train 和 Y_train,接下来使用线性回归模型进行训练,并使用测试数据进行预测。
SET X_train [1, 2, 3, 4]
SET Y_train [0, 1, 0, 1]
ML.TRAIN linear_regression linear_model X_train Y_train
SET X_test [2.5, 3.5]
ML.PREDICT linear_model X_test
2.2.4 应用场景:
- 实时推荐系统:为用户提供个性化推荐,适用于电商、社交平台等。
- 实时预测与决策支持:在金融风控、设备监控等领域进行实时预测。
- A/B 测试与模型验证:快速切换和评估不同机器学习模型。
- 物联网数据分析:处理 IoT 设备数据进行故障预测或状态监控。
- 机器学习实验与迭代:快速实验、训练和更新模型配置。
- 边缘计算与本地推理:在边缘设备上进行实时推理,减少云端依赖。
- 数据流处理与实时分析:处理实时数据流并进行分析,适用于流量监控、社交媒体分析等
数据格式与注意事项
1. RedisML 的数据类型通常是数组或列表。在训练数据较大的情况下,最好将数据拆分成小批次进行训练。
2. 对于模型训练,不是直接磁盘上进行大量的操作,而是将所有数据加载到内存中,要求机器具有足够的内存以支持大规模的数据训练和推理。
2.3 Neural-Redis
Neural-Redis 是一个结合 Redis 数据库和神经网络技术的扩展模块,旨在提供一个高效的机器学习平台,能够在 Redis 中存储和运行神经网络模型。它通过将神经网络模型直接部署到 Redis 中,实现低延迟、高吞吐量的实时推理和训练,使得机器学习任务在实时和大规模数据处理场景中得以高效执行2.3.1 原理
- Neural-Redis 允许用户直接在 Redis 环境中训练和运行神经网络模型。主要依赖于 Redis 的高效内存存储功能,并通过与深度学习框架(如 TensorFlow、PyTorch)集成,在 Redis 环境中执行模型训练和推理操作。训练:Neural-Redis 支持通过 Redis 存储训练数据,并利用神经网络算法训练模型。数据存储在 Redis 的内存中,减少了传统深度学习框架的磁盘 I/O。推理:一旦模型训练完成,可以将其保存为 Redis 中的对象,并在之后的请求中进行快速推理。推理过程直接在 Redis 中执行,具有非常低的延迟。
- Neural-Redis 集成了流行的深度学习框架,如 TensorFlow 和 PyTorch,以便开发者可以利用现有的机器学习生态系统训练和优化模型。训练好的模型可以通过 Redis 存储,并在生产环境中进行实时推理。存储模型:训练好的神经网络模型以 Redis 键值对的形式存储在内存中,确保快速访问和高效推理。多框架支持:Neural-Redis 支持 TensorFlow、PyTorch 等主流深度学习框架,允许用户灵活地选择工具训练和优化模型。
- Redis 的内存存储结构非常适合处理大量数据,特别是对于深度学习任务。Neural-Redis 充分利用 Redis 的内存数据库特性,实现快速的数据存取和处理,确保模型能够快速加载并响应实时查询。
- 内存计算:与传统的基于磁盘的模型存储不同,Neural-Redis 完全依赖内存进行数据存储和计算,显著提升了响应速度和并发处理能力。
- 实时推理:模型推理过程完全在内存中执行,避免了磁盘 I/O 的瓶颈,确保了实时性和高效性
2.3.2 基本操作
# 语法:
NEURAL.SET <model_name> <model_data>
# 说明:model_name 模型的名称
model_data 是模型的二进制数据(通常为 .h5, .pb, .pt 等格式)。
EURAL.PREDICT <model_name> <input_data>
input_data 通常是模型的输入数据,可能是一个图像的二进制数据,文本数据或数字数据。
NEURAL.SET <model_name> <new_model_data>(覆盖旧模型)
2.3.3 核心功能
- 神经网络模型存储:支持将训练好的神经网络模型以 Redis 键值对的形式存储,便于管理和版本控制。
- 模型推理:支持快速加载存储的神经网络模型并进行实时推理,用于在线预测和决策。
- 实时更新:训练和推理过程在 Redis 中进行,能够在实时数据流的环境下进行模型更新和推理。
- 多种输入数据类型支持:支持各种输入数据格式,如文本、图像、数字等,适用于多种应用场景。
2.3.4 应用场景
- 实时推荐系统:支持电商、社交平台等的实时推荐系统,提供低延迟、高并发的推荐服务。
- 图像分类与目标检测:在智能监控、自动驾驶和医学影像分析中,通过 Neural-Redis 存储训练好的卷积神经网络(CNN)模型,进行实时图像分类和目标检测。
- 自然语言处理(NLP):可用于存储和执行 NLP 模型,进行情感分析、文本分类、机器翻译等任务。
- 金融风控与欺诈检测:在金融领域,Neural-Redis 可以用于存储和执行交易欺诈检测模型,根据实时交易数据进行风险评估。
- 物联网(IoT):在智能家居、工业监控等物联网应用中,Neural-Redis 可用于存储传感器数据和实时分析模型,提供故障检测和预测。
- 边缘计算:在边缘计算设备上,Neural-Redis 可以存储并运行神经网络模型,进行本地推理,减少对云端的依赖。
2.4 RedisAI
RedisAI 提供高性能的人工智能(AI)和机器学习(ML)功能。通过模块用户能够在 Redis 环境中执行深度学习、机器学习模型的推理,并实现实时数据流的处理。RedisAI 将 AI 模型(如 TensorFlow、PyTorch、ONNX 等)集成到 Redis 中,使得机器学习和深度学习模型可以高效地部署和运行在 Redis 环境下。2.4.1 核心功能
- 模型推理:用户可以在 Redis 中直接执行存储的模型,进行推理,过程可以是针对单个数据样本的预测,也可以是批量推理。
- 张量操作:Tensor张量是深度学习中的基本数据结构, 进行高效的张量运算。
- 多框架支持:支持多个深度学习框架,包括 TensorFlow、PyTorch 和 ONNX
- 实时推理和批量推理:通过 Redis 高效的内存存储和数据访问特性,支持低延迟的实时推理,也能高效处理批量数据。
2.4.2 RedisAI 主要组件
Tensor:RedisAI 的核心数据结构。它代表了用于深度学习和机器学习计算的数据,例如图片数据、文本数据或其他模型输入。Tensor 在 Redis 中作为键值对存储。Model:训练好的深度学习或机器学习模型(如 TensorFlow、PyTorch、ONNX)。RedisAI 允许用户将模型存储为 Redis 中的键值对。Execution:执行存储在 Redis 中的模型。RedisAI 使得模型的推理过程通过 Redis 命令进行操作。2.4.3 基本操作
RedisAI 提供了一系列命令来进行模型管理、张量操作和推理,常用的命令:AI.MODELSET model_name <backend> <device> <model_data>
# 说明:model_name:模型的名称
backend:深度学习框架(例如:tensorflow、torch、onnx)
device:执行推理的设备(例如:cpu 或 gpu)
model_data:训练好的模型数据(通常是二进制格式)
eg: AI.MODELSET my_model tensorflow cpu model.pbAI.MODELGET
从 Redis 中获取已存储的模型。
AI.MODELGET my_model
AI.TENSORSET:用于存储张量,张量代表了模型的输入数据或模型推理的结果。
eg:AI.TENSORSET tensor_name <shape> <dtype> <tensor_data>
# 说明:
tensor_name:张量的名称。
shape:张量的维度(例如:1,3,224,224 表示图像的形状)。
dtype:数据类型(如 float32)。
tensor_data:张量的数据(通常为数值数组)
eg:AI.TENSORSET input_tensor 1,3,224,224 FLOAT32 [1.0, 2.0, 3.0, ...]
AI.TENSORGET:从 Redis 中获取张量数据。
AI.TENSORGET tensor_name
AI.TENSORGET input_tensor
AI.MODELRUN:执行推理操作。此命令会加载模型并执行推理,生成输出张量。
AI.MODELRUN model_name INPUTS input_tensor OUTPUTS output_tensor
model_name:模型的名称。
INPUTS:输入张量的名称。
OUTPUTS:输出张量的名称
2.4.4 多框架支持
RedisAI 支持多种流行的机器学习和深度学习框架。通过不同的后端,RedisAI 能够加载和执行这些框架的模型。支持的框架包括:TensorFlow:支持 .pb 格式的模型。
PyTorch:支持 .pt 格式的模型。
ONNX:支持 .onnx 格式的模型。
硬件加速
RedisAI 还支持在不同硬件设备上执行模型推理,包括:CPU:在通用计算资源上执行推理。
GPU:在支持 CUDA 的 GPU 上执行推理,提供更快的计算速度,适合大规模模型和数据。2.4.5 应用场景
- 实时推荐系统:电商平台、社交平台等使用实时推荐算法为用户推荐商品、视频等。
- 实时图像分类:在智能监控、自动驾驶等场景中,需要实时处理和分析图像数据。
- 自然语言处理(NLP):聊天机器人、情感分析、语音识别等应用中,实时分析文本数据并做出响应。
- 金融风控与欺诈检测:在金融交易中实时监控交易行为,快速检测欺诈行为。
- 物联网(IoT)和边缘计算:在边缘设备上执行模型推理,进行状态监测、故障预测等。参考链接:https://github.com/RedisAI/RedisAI
2.5 更多Modules
参考链接:https://redis.io/modules3. 模块的安装与配置
3.1 动态加载(无需重启)
redis-cli MODULE LOAD /usr/local/redismodule62/redisearch.so
优点:快速生效,无需停机。
缺点:重启 Redis 后失效。3.2 持久化配置(需重启)
修改 Redis 配置文件 redis.conf
,添加模块路径:loadmodule /usr/local/redismodule62/redis-modules/redisearch.so
- 版本兼容性:确保模块与 Redis 版本匹配(如 RediSearch 2.x 需 Redis 6.0+)。
- 资源监控:加载多个模块可能增加内存和 CPU 开销。
- 依赖安装:部分模块需系统库支持(如 RediSearch 依赖
libgomp1
)。
4. HULK平台RedisModule使用
4.1 实例申请及模块选择
4.2 模块验证
127.0.0.1:26214> module list
4.3 已有实例加载模块
如果已运行的实例,需要手动加载某个module,则联系DBA操作。NOTE:由于Redis Module 为外部三方插件,可能会有bug和不稳定因素造成redis实例崩溃,请评估好风险。以下是一个基于 RediSearch 的简单商品搜索实现:1. 创建索引与插入数据
from redis import Redis
from redisearch import Client, TextField, NumericField
# 连接到 Redis
r = Redis(host='localhost', port=26214)
client = Client("product_index", conn=r)
# 定义索引字段
client.create_index([
TextField("name", weight=5.0), # 名称字段权重更高
TextField("description"),
NumericField("price")
])
# 插入商品数据
products = [
{"name": "Laptop", "description": "High-performance gaming laptop", "price": 1500},
{"name": "Smartphone", "description": "5G smartphone with AI camera", "price": 800},
]
for idx, product in enumerate(products):
r.hset(f"product:{idx}", mapping=product)
2. 执行复杂查询
# 搜索价格低于 1000 且包含 "5G" 的商品
query = "@price:[0 1000] @description:5G"
result = client.search(query)
for doc in result.docs:
print(f"商品: {doc.name}, 价格: {doc.price}")
商品: Smartphone, 价格: 800
5. 总结与展望
智汇云中间件持续推出向量数据库以及结合现有DB的向量功能,Redis引入相关模块,不断满足业务对AI 的需求。通过 RedisAI 模块,企业可以实现高效的 AI 模型推理,支持多种框架(如 TensorFlow、PyTorch、ONNX),为业务提供实时智能推理服务。例如,智能推荐系统、语音识别、图像处理等场景都能通过 RedisAI 实现低延迟和高吞吐量的 AI 推理,提升整体业务的智能化水平。此外,RedisML 提供了适用于传统机器学习任务的解决方案,可以帮助业务团队在 Redis 中进行实时训练和推理,支持简单易用的机器学习算法,如线性回归和决策树,进一步扩展 Redis 在 AI 领域的应用场景。5.2 多元化:Redis 云原生与 Pika 解决方案中间件也在探索Redis将在K8S中应用,结合云原生的灵活地扩展 ,提高Redis 的计算能力和高并发的实时数据处理。为了应对 Redis 在数据量和内存容量上的挑战,中间件团队推出pikiwidb(pika)新版本基于缓存功能自动冷热加载的功能,可以完全作为 Redis 替代或补充方案,提高存储和提高pikiwidb(pika)吞吐量并降低成本(pikiwidb(pika) 由360中间件团队完全自主研发kv类型数据库)。未来中间件团队将提供Pika Serverless方案按需扩展和按量计费的能力,可以在需要时自动扩展容量,避免了Redis & pikiwidb(pika)部署中由于容量不足或过剩导致的资源浪费或性能瓶颈。未来,智汇云中间件将在 Redis 模块化的基础上,不断引入新的模块满足业务需求,Redis 的弹性和可扩展性将为业务提供更多灵活的选择,推动智能化数据架构的普及。如果有更具体的场景或需求,也进一步探讨不同 Redis 模块的细节与优势,帮助优化技术架构。360智汇云是以"汇聚数据价值,助力智能未来"为目标的企业应用开放服务平台,融合360丰富的产品、技术力量,为客户提供平台服务。目前,智汇云提供数据库、中间件、存储、大数据、人工智能、计算、网络、视联物联与通信等多种产品服务以及一站式解决方案,助力客户降本增效,累计服务业务1000+。智汇云致力于为各行各业的业务及应用提供强有力的产品、技术服务,帮助企业和业务实现更大的商业价值。官网:https://zyun.360.cn 或搜索“360智汇云”关注公众号,干货满满的前沿技术文章等你来。想看哪方面内容,也欢迎留言和我们交流!