RediSearch 2.8 发行说明
支持 RESP3。地理多边形搜索。性能改进。
要求
RediSearch v2.8.26 需要
- 最低 Redis 兼容版本(数据库):7.2
- 最低 Redis Enterprise Software 版本(集群):7.2.4
v2.8.26 (2025 年 4 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!
错误修复
- #5864 使用
FT.AGGREGATE配合ON_TIMEOUT RETURN和多线程时,最后一个查询结果可能丢失 (MOD-9222) - #5863 在使用 RESP3 的
FT.AGGREGATE期间从分片收集空结果可能导致崩溃 (MOD-9174)
改进
创建时间:2025-04-21T14:51:40Z
v2.8.25 (2025 年 3 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!
错误修复
- #5709 使用
SCORER BM25时,查询字符串中的权重会被忽略 (MOD-7896) - #5788 使用
SORTBY的游标永远不会耗尽,如果在达到游标限制时会阻塞查询 (MOD-8483) - #5788 即使
ON_TIMEOUT设置为RETURN,由于TIMEOUT也会导致 RESP3 结果为空 (MOD-8482) - #5788 在
FT.AGGREGATE上使用 RESP3 的游标永远不会耗尽,如果在达到游标限制时会阻塞查询 (MOD-8515) - #5788 在已超时的查询上使用
FT.CURSOR READ导致结果少于预期 (MOD-8606) - #5810
FT.AGGREGATE命令的total_results字段在 RESP3 中不正确 (MOD-9054)
改进
- #5788 修正了一个协调器竞争条件,该条件阻止了过早释放,从而避免了查询执行期间的错误和不一致 (MOD-8794)
v2.8.24 (2025 年 2 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:LOW 如果没有需要使用的新功能,则无需升级。
错误修复
- #5647 使用西里尔字符和通配符的
FT.SEARCH不返回结果 (MOD-7944)
v2.8.23 (2025 年 2 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!
错误修复
- #5605 内存块读取逻辑的更改可能导致
FT.SEARCH崩溃,并出现错误 "Redis 7.4.2 crashed by signal: 11, si_code: 128"
已知限制
-
在摄取期间(例如,在
HSET上),仅将字符串字段的前 128 个字符规范化为小写。示例HSET doc __score 1.0 name "idx1S...S" mynum 1 # Assume "S...S" is a string of 252 capital S's FT.CREATE "idx" SCHEMA "name" "TEXT" "mynum" "NUMERIC" FT.SEARCH "idx" "@name:idx1S...S" # Assume "S...S" is a string of 252 capital S'sFT.SEARCH命令将不返回文档。
v2.8.22 (2025 年 1 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!
错误修复
v2.8.21 (2025 年 1 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:SECURITY:此版本包含安全修复。
安全和隐私
- #5457 (CVE-2024-51737) 查询:潜在的越界写入 (MOD-8486)
错误修复
- #5299 长度超过 1024 个字符的前缀/中缀/后缀查询可能导致崩溃 (MOD-7882)
- #5303 后台索引期间过期的键在使用
replicaof时可能导致跨槽错误 (MOD-7949) - #5280
FT.CURSOR READ检索已删除的TAG字段导致崩溃 (MOD-8011) - #5427 在集群数据库中对数字字段进行
FT.AGGREGATE操作导致failed_calls计数增加 (MOD-8058) - #5242 索引清理程序在处理缺失值时对
bytes_collected进行内存计数 (MOD-8097, MOD-8114) - #5167 来自超时的查询的游标未被耗尽,导致可用游标数量耗尽 (MOD-8009)
改进
- #5260 优化索引占用的内存,仅在写入操作时创建 (MOD-8125)
v2.8.17 (2024 年 8 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!
-
错误修复
v2.8.16 (2024 年 8 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!
-
错误修复
- #4896 - 在集群模式下,分片不处理带有
VERBATIM选项的FT.AGGREGATE(MOD-7463) - #4917 - 类似于
"is|the"的联合查询,以 2 个停用词开头可能导致崩溃 (MOD-7495) - #4921 - 在
INFO响应的#search部分重复计算字段统计信息 (MOD-7339) - #4939 - 使用 RESP3 响应达到
MAXPREFIXEXPANSION时发出查询警告 (MOD-7588) - #4930 - 使用通配符
w'term'和前缀/中缀/后缀模式'ter*'时出现循环,导致分片重启 (MOD-7453) - #4912 - 查询数字值时避免词干扩展 (MOD-7025)
- #4896 - 在集群模式下,分片不处理带有
v2.8.15 (2024 年 7 月)
更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!
-
错误修复
-
改进
v2.8.14 (2024 年 6 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:MODERATE:计划服务器升级,但不紧急。
-
错误修复
-
改进
v2.8.13 (2024 年 3 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!
详情
-
错误修复
- #4481
GEOSHAPE的查询语法仅接受前缀而不是完整谓词 (MOD-6663) - #4513 在数字查询中使用
FT.CURSOR READ导致崩溃 (MOD-6597) - #4534 在集群设置中,带有不正确参数的
FT.PROFILE可能导致崩溃 (MOD-6791) - #4530 一些参数设置仅使用前缀而不是完整值却可以工作 (MOD-6709)
- #4539 在加载新的 RDB 文件时重新索引期间未释放内存可能导致崩溃 (MOD-6831, 6810)
- #4498 超时的向量预过滤查询(混合查询)在尝试写入新文档时由于死锁导致崩溃 (MOD-6510, MOD-6244)
- #4495 如果使用已弃用的
FT.ADD命令,FT.SEARCH访问不存在的内存地址会导致崩溃 (MOD-6599)
- #4481
-
改进
v2.8.12 (2024 年 3 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:MODERATE:计划服务器升级,但不紧急。
详情
-
错误修复
-
改进
- #4313 查询
GEOSHAPE类型所用内存的内存分配模式 (MOD-6431)
- #4313 查询
v2.8.11 (2024 年 1 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:MODERATE:计划服务器升级,但不紧急。
详情
-
错误修复
-
改进
- #4264
FT.PROFILE上时间报告计数器的粒度 (MOD-6002)
- #4264
v2.8.10 (2024 年 1 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!
详情
-
错误修复
- #4287 从副本同步时的重新索引过程由于内部索引变量初始化而导致崩溃 (MOD-6337, MOD-6336)
- #4249 集群设置中的内存跟踪导致高内存使用量,可能导致内存溢出 (MOD-6123, MOD-5639)
- #4244 使用
WITHCURSOR标志和-子句对FT.AGGREGATE进行性能分析时,由于超时导致崩溃 (MOD-5512) - #3916 查询期间
JSON文档过期,由于死锁导致崩溃 (MOD-5769, MOD-5895, MOD-6189, MOD-5895) - #4235 数据库上内存过度增长,原因在于倒排索引 trie 的节点不平衡 (MOD-5880, MOD-5952, MOD-6003)
- #4190 对
FT.AGGREGATE进行性能分析导致 RESP3 回复崩溃 (MOD-6250, MOD-6295) - #4148, #4038
ON_TIMEOUT FAIL\RETURN策略在集群设置中未被遵守 (MOD-6035, MOD-5948, MOD-6090) - #4110 超时时,错误响应格式包含不一致 (MOD-6011, MOD-5965)
- #4104 在 Amazon Linux 2 上使用 TLS 加密时
FT.SEARCH无响应 (MOD-6012) - #4009 在集群设置中,
FT.SEARCH不返回超时错误 (MOD-5911) - #3920 在集群设置中,
FT.AGGREGATE不返回超时错误 (MOD-5209) - #3914 在游标读取之间数据更新时,带有地理查询的
FT.CURSOR READ导致崩溃 (MOD-5646) - #4220 删除索引后尝试运行 ForkGC(垃圾回收例程)时服务器崩溃 (MOD-6276)
-
改进
- #3682 在
FT.INFO中报告最后一个键错误和字段类型索引失败 (MOD-5364) - #4236 在
FT.INFO报告中添加矢量索引参数 (MOD-6198) - #4196 在集群设置中,在
FT.SEARCH处理结果后检查超时 (MOD-6278) - #4164 在 RESP3 回复中报告
TIMEOUT,MAXPREFIXEXPANSION警告 (MOD-6234) - #4165 在
FT.PROFILE报告中指示超时 (MOD-6184) - #4149 在
FAIL超时策略下,从 Cursor 指示超时 (MOD-5990) - #4147 最大数字值范围的初始化,从而更好地平衡索引叶节点分割 (MOD-6232)
- #3940 当谓词包含多个
UNION(OR) 的INTERSECTION(AND) 时,优化查询 (MOD-5910) - #4059 当策略为
ON_TIMEOUT RETURN且发生超时时,返回游标 ID (MOD-5966) - #4006 可能存在问题的索引名称别名验证 (MOD-5945)
- #3682 在
v2.8.9 (2023 年 10 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:HIGH:存在一个可能影响部分用户的严重错误。请升级!
详情
-
错误修复
-
改进
v2.8.8 (2023 年 9 月)
这是 RediSearch 2.8 的维护版本。
更新紧急程度:SECURITY:此版本包含安全修复。
详情
-
安全和隐私
-
错误修复
- #3771 在
DIALECT 3的FT.AGGREGATE的APPLY阶段中,lower()和upper()函数损坏 (MOD-5041) - #3752 在
FT.AGGREGATE中设置较低的MAXIDLE参数值导致崩溃 (MOD-5608) - #3780 错误的文档长度计算导致不正确的分值 (MOD-5622)
- #3808 在
FILTER步骤之后的LOAD步骤可能导致FT.AGGREGATE崩溃 (MOD-5267) - #3823
APPLY或FILTER解析器泄漏 (MOD-5751) - #3837 在 Redis 7.2 上使用 TLS 的连接失败 (MOD-5768)
- #3856 向 OSS 集群添加新节点导致崩溃 (MOD-5778)
- #3854 向量范围查询可能由于内存损坏导致内存溢出 (MOD-5791)
- #3771 在
-
改进
- #3534 向量相似度 0.7.1 (MOD-5624)
v2.8 GA (v2.8.4) (2023 年 7 月)
这是 RediSearch 2.8 的通用版本。
要点
RediSearch 2.8 引入了对 RESP3 的支持、新功能、性能改进和错误修复。
2.8.4 中的新功能
这个新的主要版本引入了新的、备受期待的地理多边形搜索功能,添加了支持使用 WKT 表示法 的多边形形状的 GEOSHAPE 字段类型。除了地理范围查询中使用的当前 GEO (GEOPOINT 的别名) 之外,我们还添加了对 POLYGON 和 POINT 作为新的地理形状格式(新的 GEOSHAPE)的支持。此外,2.8 为使用 FT.SEARCH 和 FT.AGGREGATE 的 SORT BY 操作带来了性能改进,并为仅在 RESP3 中使用的 FT.SEARCH 和 FT.AGGREGATE 提供了新的 FORMAT 以增强响应。
功能特性
-
引入对地理多边形形状和查询的支持
-
在
FT.CREATE的SCHEMA中添加GEOSHAPE字段类型 以映射多边形 (MOD-4798) -
支持使用 WKT 表示法 的多边形
POLYGON和POINT,例如POLYGON((lon1 lat1, lon2 lat2, ...)) -
调整使用
DIALECT 3的FT.SEARCH的查询语法,使用谓词@geom:[OPERATOR $poly]查询多边形,并在 WKT 格式中定义多边形为PARAMS 2 poly "POLYGON((10 20, ...))" -
目前最初支持带有
GEOSHAPES的WITHIN和CONTAINS运算符 -
支持多种坐标系:带有
FLAT标志的笛卡尔坐标系 (X,Y) 用于平面地球,以及带有SPHERICAL标志的地理坐标系 (lon, lat) (MOD-5303)。默认使用球形索引的地理坐标系 (SPHERICAL) -
在
FT.INFO响应报告中添加每个几何索引的内存使用情况 (MOD-5278)
-
-
在
DIALECT 4中默认引入对FT.SEARCH和FT.AGGREGATE排序操作的性能优化。这将改进以下 4 种不同场景的性能-
跳过排序器 - 在没有任何排序时应用。查询可以在达到请求的
LIMIT结果时返回。 -
部分范围 - 在对数字字段使用
SORTBY且没有过滤器或按相同数字字段过滤时应用,查询在足够大的范围内迭代以满足请求的LIMIT结果。 -
混合 - 在对数字字段使用
SORTBY且带有其他非数字过滤器时应用。部分结果将被过滤,初始范围可能不够大。迭代器随后会使用后续范围重新开始,并进行额外的迭代以收集请求的LIMIT结果。 -
无优化 - 如果按分值或非数字字段排序,则只能检索所有结果并比较它们的值。
-
-
添加
WITHCOUNT参数,该参数允许返回带有排序的查询结果的准确计数。此操作会处理所有结果以获得准确计数,性能低于优化选项(DIALECT 4中的默认行为)(MOD-5311) -
FT.SEARCH和FT.AGGREGATE中新的FORMAT参数,用于将结果检索为 JSON 字符串或 RESP3 分层结构(仅限 RESP3)(MOD-5390)
改进(自 2.8.3 起)
-
#3717 - 多边形形状验证以及顺时针方向时的方向校正 (MOD-5575)
-
#3657 - 允许对模式中的所有分层索引进行 GC 调用
-
#3701 - HNSW 现在使用数据块存储向量和元数据,而不是数组
行为变更
-
Redis 内部的版本将是语义版本控制中的 2.8.4。由于 Redis 中模块的版本是数字的,我们无法添加 GA 标志。
-
最低 Redis 版本:7.2
-
如果索引和查询 RedisJSON 数据结构,此版本最好与 RedisJSON 2.6(v2.6.0 及更高版本)结合使用。