RediSearch 2.8 发布说明
支持RESP3。地理多边形搜索。性能改进。
需求
RediSearch v2.8.21 需要:
- 最低Redis兼容版本(数据库):7.2
- 最低Redis企业软件版本(集群):7.2.4
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
:存在一个可能影响部分用户的关键错误。请升级!
-
Bug 修复:
- #4896 - 在集群模式下,带有
VERBATIM
选项的FT.AGGREGATE
未被分片处理 (MOD-7463) - #4917 - 类似于
"is|the"
的联合查询,以两个 stopwords 开头可能导致崩溃 (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
:存在一个可能影响部分用户的关键错误。请升级!
-
Bug 修复:
-
改进:
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
:存在一个可能影响部分用户的关键错误。请升级!
详情:
-
Bug 修复:
- #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 由于倒排索引树中节点不平衡导致数据库内存过度增长 (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
超时策略下从游标指示超时 (MOD-5990) - #4147 初始化最大数值范围,导致索引叶分裂的更好平衡 (MOD-6232)
- #3940 当谓词包含多个
INTERSECTION
(AND) 的UNION
(OR) 时的查询优化 (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 使用TLS的连接在Redis 7.2上失败 (MOD-5768)
- #3856 向OSS集群添加新节点导致崩溃 (MOD-5778)
- #3854 由于内存损坏,向量范围查询可能导致内存不足 (MOD-5791)
- #3771 在
-
改进:
- #3534 Vector Similarity 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, ...))
-
调整
FT.SEARCH
上的查询语法以使用谓词@geom:[OPERATOR $poly]
并以WKT格式定义多边形为PARAMS 2 poly "POLYGON((10 20, ...))"
,使用DIALECT 3
-
目前仅支持
WITHIN
和CONTAINS
操作符与GEOSHAPES
-
支持多种坐标系:使用
FLAT
标志的笛卡尔坐标系(X,Y)用于平面地球,使用SPHERICAL
标志的地理坐标系(lon, lat)(MOD-5303)。默认使用球形索引的地理坐标系(SPHERICAL
) -
在
FT.INFO
响应报告中添加每个几何索引的内存使用情况 (MOD-5278)
-
-
介绍在
DIALECT 4
上默认对FT.SEARCH
和FT.AGGREGATE
的排序操作进行性能优化。它将在以下四种不同场景中提高性能:-
跳过排序器 - 当没有任何排序时应用。查询可以在达到
LIMIT
请求的结果后返回。 -
部分范围 - 当对数字字段进行
SORTBY
排序时应用,没有过滤器或使用相同数字字段进行过滤,查询在足够大的范围内迭代以满足LIMIT
请求的结果。 -
混合 - 当对数字字段进行
SORTBY
排序并附加另一个非数字过滤器时应用。一些结果将被过滤,初始范围可能不够大。然后迭代器在以下范围内重新开始,并进行额外的迭代以收集LIMIT
请求的结果。 -
无优化 - 如果按分数或非数字字段排序,除了检索所有结果并比较它们的值外,没有其他选择。
-
-
添加
WITHCOUNT
参数,允许返回带有排序的查询结果的准确计数。此操作处理所有结果以获得准确计数,性能低于优化选项(DIALECT 4
上的默认行为)(MOD-5311) -
新增
FORMAT
参数在FT.SEARCH
和FT.AGGREGATE
中,用于将结果作为 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及以上版本)结合使用。