*Redis FT.ALIASADD 命令
FT.ALIASADD 为现有 RediSearch 索引创建一个别名,允许通过别名引用索引。
*语法
FT.ALIASADD alias index
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| alias | String | 是 | 别名名称 |
| index | String | 是 | 现有索引名称 |
*返回值
- OK:别名添加成功
- Error:索引不存在或别名已被其他索引使用
*时间复杂度
O(1)
*
*示例
*基本用法
> FT.CREATE idx:products ON HASH PREFIX 1 product: SCHEMA name TEXT price NUMERIC
OK
> FT.ALIASADD products idx:products
OK
> FT.SEARCH products "phone"
1) (integer) 1
2) "product:1"
3) 1) "name"
2) "smartphone"
*使用别名进行搜索
> FT.ALIASADD articles idx:articles_v1
OK
> FT.SEARCH articles "redis"
1) (integer) 5
...
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| Index not found | 索引不存在 | 确认索引名称正确,先创建索引 |
| Alias already exists | 别名已被其他索引用 | 先用 FT.ALIASDEL 删除旧别名 |
*最佳实践
- 使用别名实现索引无缝切换(如版本升级、重建索引)
- 应用代码中引用别名而非实际索引名,便于运维变更
- 配合 FT.ALIASUPDATE 实现原子切换
*FAQ
Q1: 别名和索引名可以相同吗?
A: 不建议,会造成混淆。别名应使用语义化名称,如 products 指向 idx:products_v2。
Q2: 一个索引可以有多个别名吗? A: 可以,一个索引支持多个别名,但一个别名只能指向一个索引。
Q3: 删除索引后别名会怎样? A: 删除索引会自动删除关联的别名。若需保留别名,应先通过 FT.ALIASUPDATE 将别名指向其他索引。
Q4: 别名支持在聚合查询中使用吗? A: 支持,所有接受索引名的命令(FT.SEARCH、FT.AGGREGATE 等)均可使用别名。