*Redis MODULE LOADEX 命令
MODULE LOADEX 加载一个 Redis 模块动态库文件,支持通过 CONFIG 参数传递配置,是 MODULE LOAD 的增强版。
*语法
MODULE LOADEX path [CONFIG name value [CONFIG name value ...]] [ARGS arg [arg ...]]
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | String | 是 | 模块动态库文件路径(.so / .dll) |
| CONFIG name value | String String | 否 | 模块配置参数,可重复多次 |
| ARGS arg | String | 否 | 模块启动参数,可重复多次 |
*返回值
- OK:加载成功
- Error:加载失败(路径错误、不兼容、权限不足等)
*时间复杂度
O(1)
*
*示例
*基本加载
> MODULE LOADEX /usr/lib/redis/modules/redisearch.so
OK
*带配置参数加载
> MODULE LOADEX /usr/lib/redis/modules/redisearch.so CONFIG MAXSEARCHRESULTS 10000 CONFIG MINPREFIX 1
OK
*带启动参数加载
> MODULE LOADEX /usr/lib/redis/modules/my_module.so ARGS --enable-feature --verbose
OK
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR Error loading the extension | 路径错误、文件损坏或版本不兼容 | 检查路径、权限和 Redis 版本兼容性 |
| ERR wrong number of arguments | 缺少 path 或 CONFIG/ARGS 格式错误 | 确保 path 为第一个参数 |
| ERR module already loaded | 同名模块已加载 | 先 UNLOAD 或检查是否重复加载 |
*最佳实践
- 优先使用 LOADEX 替代旧版 LOAD,支持结构化配置参数
- 生产环境加载前在测试环境验证
- 配置参数使用 CONFIG 传递,启动参数使用 ARGS 传递
- 加载成功后用 MODULE LIST 确认
- 将 loadmodule 配置写入 redis.conf 实现持久化
*FAQ
Q1: MODULE LOADEX 和 MODULE LOAD 有什么区别? A: LOADEX 支持 CONFIG 和 ARGS 参数传递,LOAD 只能传简单参数。Redis 7.0+ 推荐使用 LOADEX。
Q2: CONFIG 和 ARGS 有什么区别? A: CONFIG 是键值对配置,由 Redis 统一管理;ARGS 是原始字符串参数,直接传递给模块。
Q3: 加载失败会影响现有数据吗? A: 通常不会,加载失败会返回错误,Redis 继续运行。但 buggy 模块可能导致崩溃。
Q4: 模块加载后能修改配置吗? A: 取决于模块实现,部分模块支持运行时重配置,通常需通过模块专用命令。