Redis 7
24 / 37
系列目录
Redis 7 + ACL 单节点、主从、哨兵、集群构建方法
Redis 7 + ACL 简介
Redis SCAN 命令详解:作用、用法与最佳实践
Redis 命令及数据类型 -- 通用命令
Redis 命令及数据类型 -- String
Redis 命令及数据类型 -- Hash
Redis 命令及数据类型 -- List
Redis 命令及数据类型 -- Set
Redis 命令及数据类型 -- ZSet
一个基于 Redis 的可重入分布式锁的实现
Redis 命令及数据类型 -- Bitmap
Redis 命令及数据类型 -- Bitfield
Redis 命令及数据类型 -- Hyperloglog
Redis 命令及数据类型 -- Geo
Redis 命令及数据类型 -- Stream
Redis 扩展模块 -- RedisBloom 的安装方法
Redis 命令及数据类型 -- BF(Bloom Filter)
Redis 命令及数据类型 -- CF(Cuckoo Filter)
Redis 命令及数据类型 -- CMS(Count-Min Sketch)
Redis 命令及数据类型 -- TopK
Redis 命令及数据类型 -- TDigest
Redis 扩展模块 -- RedisJSON 的安装方法
Redis 命令及数据类型 -- JSON
Redis 扩展模块 -- RediSearch 的安装方法
RediSearch 开发实战
Redis 命令及数据类型 -- AutoSuggest
Redis 扩展模块 -- RedisTimeSeries 的安装方法
Redis 命令及数据类型 -- TimeSeries
Redis 扩展模块 -- RedisRoaring 的安装方法
Redis 命令及数据类型 -- RoaringBitmap
Redis 命令详解:事务 Transaction
Redis 命令详解:通用命令
Redis 命令详解:Server Management 命令
Redis 命令详解:Connection Management 命令
Redis 命令详解:Scripting / Functions 命令
Redis 命令详解:Cluster Management 命令
RediSearch 开发实战 之 向量检索
摘要
RediSearch 简介
RediSearch 是 Redis 官方推出的 全文搜索与二级索引模块,用于在 Redis 之上提供类似搜索引擎的能力,解决“只能按 key 查、无法高效按字段查询”的问题。它是 Redis Stack 的核心组件之一,常用于搜索、过滤、排序和聚合场景。仅支持对 Hash 和 RedisJSON 类型进行索引。
该模块以 Redis Module 方式加载,可无缝集成到现有 Redis 实例中。
Redis8+,RediSearch 已经内置在 Redis 中,可以在安装redis同时安装全部 Stack 模块。
RediSearch 通过 索引结构 + 查询语言,提供:
全文搜索(Text Search)
二级索引(按字段查询)
多条件过滤 / 排序
聚合分析(GROUP BY、COUNT、SUM 等)
性能与设计特点
索引在内存中,查询延迟低(毫秒级)
写入时同步更新索引(写入成本略高)
适合 读多写少 / 查询复杂 的业务
非事务型搜索引擎(不替代 ES,而是互补)
与原生 Redis 的对比
维度
Redis 原生
RediSearch
查询方式
key 精确
多字段查询
全文搜索
不支持
支持
范围查询
有限
强
聚合统计
基本没有
类 SQL
性能
极快
近实时,内存换性能
RediSearch vs Elasticsearch
对比点
RediSearch
Elasticsearch
部署复杂度
低
高
延迟
极低
较高
数据规模
中小规模
超大规模
实时性
强
近实时
场景
业务内搜索
搜索平台
安装 RediSearch
安装时需要科学上网,主要是安装依赖时需要从海外网下载,如果要部署在国内服务器,可能会连接失败。
可以在海外的相同配置的服务器上进行编译,之后将编译好的redisearch.so上传到国内服务器即可。
1 2 3 4 5 6 7 8 9 10 11 12 sudo dnf install -y \ gcc \ gcc-c++ \ make \ cmake \ autoconf \ automake \ libtool \ pkgconfig \ openssl-devel \ libstdc++ \ libstdc++-devel
1 2 3 4 5 6 7 8 9 10 11 12 13 CMAKE_VERSION=3.25.1 cd /usr/local/srcwget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION} /cmake-${CMAKE_VERSION} .tar.gz tar -xf cmake-${CMAKE_VERSION} .tar.gz cd cmake-${CMAKE_VERSION} ./bootstrap --prefix=/usr/local make -j$(nproc ) sudo make install/usr/local/bin/cmake --version
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 mkdir -p /usr/local/soft/modules/cd /usr/local/soft/modulesgit clone --recursive https://github.com/RediSearch/RediSearch.git cd RediSearchgit checkout v2.10.25 git submodule update --init --recursive mkdir build_dir && cd build_dir/usr/local/bin/cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER=gcc \ -DCMAKE_CXX_COMPILER=g++ make -j$(nproc ) [100%] Linking CXX shared library redisearch.so /usr/bin/ld: cannot find -lstdc++: No such file or directory collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/redisearch.dir/build.make:557: redisearch.so] Error 1 make[1]: *** [CMakeFiles/Makefile2:2958: CMakeFiles/redisearch.dir/all] Error 2 make: *** [Makefile:136: all] Error 2
1 RediSearch 2.10.x 在链接 redisearch.so 时 强制 使用 -static-libstdc++,而 libstdc++.a 静态文件不存在,导致编译失败
1 2 3 4 5 sudo dnf install -y libstdc++-staticls /usr/lib/gcc/x86_64-amazon-linux/*/libstdc++.a/usr/lib/gcc/x86_64-amazon-linux/11/libstdc++.a
1 2 3 4 5 6 7 8 9 10 11 12 13 cd /usr/local/soft/modulesrm -rf build_dirmkdir build_dir && cd build_dir/usr/local/bin/cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER=gcc \ -DCMAKE_CXX_COMPILER=g++ make -j$(nproc )
Redis 启用模块
1 2 cp build_dir/redisearch.so /usr/local/soft/redis-7.4.7/modules/redisearch.so
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 loadmodule /usr/local/soft/redis-7.4.7/modules/redisearch.so redis-server redis.conf redis-cli --user admin --pass 123456 127.0.0.1:6379> MODULE LIST 1) 1) "name" 2) "ReJSON" 3) "ver" 4) (integer ) 20816 5) "path" 6) "/usr/local/soft/redis-7.4.7/modules/rejson.so" 7) "args" 8) (empty array) 2) 1) "name" 2) "bf" 3) "ver" 4) (integer ) 20817 5) "path" 6) "/usr/local/soft/redis-7.4.7/modules/redisbloom.so" 7) "args" 8) (empty array) 3) 1) "name" 2) "search" 3) "ver" 4) (integer ) 21025 5) "path" 6) "/usr/local/soft/redis-7.4.7/modules/redisearch.so" 7) "args" 8) (empty array)
Rocky9 编译安装 RediSearch
系统版本:Rocky Linux release 9.4 (Blue Onyx)
1 2 3 4 5 6 7 8 9 10 11 12 sudo dnf install -y \ gcc \ gcc-c++ \ make \ cmake \ autoconf \ automake \ libtool \ pkgconfig \ openssl-devel \ libstdc++ \ libstdc++-devel
在 Rocky Linux 9 中,libstdc++-static 不在默认仓库里,它位于 CRB(CodeReady Builder)仓库,默认是 关闭的,所以我们需要先启用它
1 2 3 4 5 6 sudo dnf install -y dnf-plugins-coresudo dnf config-manager --set-enabled crbsudo dnf makecache
1 2 3 sudo dnf install -y libstdc++-staticls /usr/lib/gcc/x86_64-redhat-linux/*/libstdc++.a
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 mkdir -p /usr/local/soft/modules/cd /usr/local/soft/modulesgit clone --recursive https://github.com/RediSearch/RediSearch.git cd RediSearchgit checkout v2.10.25 git submodule update --init --recursive mkdir build_dir && cd build_dircmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER=gcc \ -DCMAKE_CXX_COMPILER=g++ make -j$(nproc )