cover_image

Redis Module:赋能智能化实时应用

智汇云 360智汇云开发者
2025年03月07日 06:54

1. Redis Module简述

在人工智能(AI)技术快速落地的今天,开发者面临着模型部署效率、实时推理性能与数据基础设施融合的多重挑战。Redis作为高性能内存数据库,通过RedisML、RedisSearch、Neural-Redis模块等及其AI生态工具,为实时智能场景提供了独特的技术解决方案。本文深度解析Redis中AI模块的技术特性与应用实践。
图片
模块的核心价值
  1. 扩展性:无需修改 Redis 源码即可添加新功能。
  2. 灵活性:根据业务需求按需加载模块,避免功能冗余。
  3. 高性能:模块直接与 Redis 内存数据交互,保持原生性能优势。
  4. 生态丰富:社区和官方提供了多种成熟模块,覆盖搜索、AI、时间序列等场景。
了解现有的Redis Modules请访问:https://redislabs.com/community/redis-modules-hub/

2. Redis中AI相关模块及其应用场景

Redis 生态中常用的核心模块及其典型应用案例: 
图片
2.1 RediSearch-高性能搜索引擎
RediSearch 是 Redis Labs 提供的一个模块,旨在为 Redis 增加强大的搜索和索引功能。它的设计目标是提供高效、实时的搜索引擎功能,同时保留 Redis 的高性能特性。与传统的全文搜索引擎(如 Elasticsearch、Solr)相比,RediSearch 具有极高的查询响应速度,并且在 Redis 的环境中直接运行,可以极大地减少搜索延迟。

2.1.1 原理

  1. 倒排索引
    • 使用 压缩前缀树 (Trie) 存储文本分词,支持模糊查询(%% 语法)
    • 字段支持权重设置(WEIGHT 参数),实现 TF-IDF 相关性排序
  2. 文档与字段:在 RediSearch 中,数据被存储为文档,文档由多个字段组成。每个字段可以是不同的数据类型,例如字符串、数字、地理坐标、日期等。
  3. 实时索引:当新文档插入时,RediSearch 会立即更新索引,使得新插入的数据能够在查询中立即生效。
  4. 向量搜索(v2.4+)
  5. 支持 HNSW(Hierarchical Navigable Small World)索引
    支持余弦相似度(COSINE)、欧氏距离(L2)等度量方式
    FT.CREATE idx VECTOR 6 FLAT TYPE FLOAT32 DIM 768 DISTANCE_METRIC COSINE
    5.混合查询
    支持文本过滤与向量搜索的联合查询
    FT.SEARCH idx "@tags:{科技} => [KNN 10 @embedding $vec]" PARAMS 2 vec "..."

2.1.2 核心特性

  • 倒排索引加速搜索
  • 支持中文分词(需插件)
  • 简单,快速索引和搜索
  • 文档和字段评分
  • 通过词干扩展查询
  • 强大的自动提示引擎
  • 数据存储在内存中,使用内存-有效的自定义数据结构
  • 支持多种使用UTF-8编码的语言,支持多种数据类型

2.1.3 基本操作

1. 创建索引 (FT.CREATE)
通过 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(数字类型)
2. 插入数据 (HSET)
向 Redis 中插入数据通常通过 HSET 命令进行,RediSearch 会自动为这些数据创建索引。
HSET product:1 name "Smartphone" price 599HSET 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说明:计算所有产品的平均价格。
5. 删除索引 (FT.DROPINDEX)
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_trainY_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_type:模型类型,如 linear_regression、logistic_regression 等model_name:训练后生成的模型名称(keyname)X_data_key:存储训练数据特征的 (keyname)Y_data_key:存储训练数据标签的(keyname)options:可选参数,如正则化参数等。# 示例:ML.TRAIN linear_regression my_model X_train Y_train# X_train 和 Y_train 数据,训练一个线性回归模型,并将模型命名为 my_model
  • 获取模型信息 (ML.INFO)
ML.INFO <model_name># 说明:查看已训练模型的详细信息,包括模型的参数和训练状态。
  • 进行预测 (ML.PREDICT)
ML.PREDICT <model_name> <X_data_key># 说明:命令用于使用已训练的模型进行预测。模型名称和要预测的数据(如 X_test)# model_name:要进行预测的模型名称。# X_data_key:用于预测的输入数据
  • 列出所有模型 (ML.LIST)
ML.LIST # 说明:命令列出 Redis 中所有的机器学习模型。
  • 删除模型 (ML.DELETE)
ML.DELETE <model_name># 说明:用于删除一个模型,释放内存空间
  • 训练数据和模型格式
    训练数据通常是数值型的数组或矩阵,RedisML 以 Redis 键值对的形式存储这些数据。以下是一些常见的操作示例。
存储训练数据:可以通过 Redis 的标准命令将训练数据存储为键值对。例如:
SET X_train [1, 2, 3, 4, 5]SET Y_train [0, 1, 0, 1, 0]# 说明:训练数据 X_train 和 Y_train 存储
  • 常见模型类型
线性回归 (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 基本操作

1. 模型存储
# 语法:NEURAL.SET <model_name> <model_data># 说明:model_name 模型的名称model_data 是模型的二进制数据(通常为 .h5, .pb, .pt 等格式)。
2. 加载和推理
# 语法:EURAL.PREDICT <model_name> <input_data># 说明:model_name 模型名称input_data 通常是模型的输入数据,可能是一个图像的二进制数据,文本数据或数字数据。
3. 模型更新
# 语法:NEURAL.SET  <model_name>  <new_model_data>(覆盖旧模型)# 说明:new_model_data 新的模型数据
4. 获取模型
# 语法NEURAL.GET model_name

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_tensorAI.MODELRUN:执行推理操作。此命令会加载模型并执行推理,生成输出张量。
AI.MODELRUN model_name INPUTS input_tensor OUTPUTS output_tensormodel_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/modules

3.  模块的安装与配置

3.1  动态加载(无需重启)

通过 MODULE LOAD 命令临时加载模块:
# 示例:动态加载 RediSearchredis-cli MODULE LOAD /usr/local/redismodule62/redisearch.so
优点:快速生效,无需停机。
缺点:重启 Redis 后失效。

3.2  持久化配置(需重启)

修改 Redis 配置文件 redis.conf,添加模块路径:
loadmodule /usr/local/redismodule62/redis-modules/redisearch.so
重启 Redis 服务后永久生效。
3.3 注意事项
  • 版本兼容性:确保模块与 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实例崩溃,请评估好风险。
4.4 实战案例:构建电商商品搜索系统
以下是一个基于 RediSearch 的简单商品搜索实现:

1. 创建索引与插入数据

from redis import Redisfrom redisearch import Client, TextField, NumericField
# 连接到 Redisr = 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. 总结与展望

5.1 场景化扩展
智汇云中间件持续推出向量数据库以及结合现有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)部署中由于容量不足或过剩导致的资源浪费或性能瓶颈。
5.3 展望
未来,智汇云中间件将在 Redis 模块化的基础上,不断引入新的模块满足业务需求,Redis 的弹性和可扩展性将为业务提供更多灵活的选择,推动智能化数据架构的普及。如果有更具体的场景或需求,也进一步探讨不同 Redis 模块的细节与优势,帮助优化技术架构。

END

360智汇云是以"汇聚数据价值,助力智能未来"为目标的企业应用开放服务平台,融合360丰富的产品、技术力量,为客户提供平台服务。
目前,智汇云提供数据库、中间件、存储、大数据、人工智能、计算、网络、视联物联与通信等多种产品服务以及一站式解决方案,助力客户降本增效,累计服务业务1000+。
智汇云致力于为各行各业的业务及应用提供强有力的产品、技术服务,帮助企业和业务实现更大的商业价值。
官网:https://zyun.360.cn 或搜索“360智汇云
客服电话:4000052360
欢迎使用我们的产品!😊
关注公众号,干货满满的前沿技术文章等你来。想看哪方面内容,也欢迎留言和我们交流!


继续滑动看下一个
360智汇云开发者
向上滑动看下一个