搜索和查询 Active-Active 数据库
搜索和查询 Active-Active 数据库。
从 RediSearch 2.x(在 Redis Enterprise Software (RS) 6.0 及更高版本中支持)开始,您可以在创建时为启用搜索和查询功能,用于Active-Active 数据库。
您可以在 Active-Active 数据库的任何实例上运行搜索操作。
工作原理
- 创建启用 RediSearch 2.x 的 Active-Active 数据库。
- 在数据库的每个实例上创建索引。
- 如果您使用同义词,需要将它们添加到每个副本中。
- 索引由每个实例在数据库键空间之外维护,因此只同步对数据库中哈希的更新。
命令兼容性
Active-Active 数据库不支持以下搜索和查询命令
示例
以下是一个示例,帮助您理解 Active-Active 搜索和查询
时间 | 描述 | CRDB 实例 1 | RediSearch 实例 1 | CRDB 实例 2 | RediSearch 实例 2 |
---|---|---|---|---|---|
t0 | 在每个实例上创建索引 | FT.CREATE idx .... | FT.CREATE idx .... | ||
t1 | 在实例 1 上添加 doc1 作为哈希;RediSearch 在实例 1 上为 doc1 建立索引 | HSET doc1 field1 "a" | (索引 doc1 field1 "a") | ||
t2 | 在实例 2 上添加 doc2 作为哈希;RediSearch 在实例 2 上为 doc2 建立索引 | HSET doc1 field2 "b" | (索引 doc1 field2 "b") | ||
t3 | 在每个实例中搜索“a”,只在实例 1 中找到结果 | FT.Search idx "a" 1) 1 2) doc1 |
FT.Search idx "a" 1) 0 |
||
t4 | Active-Active 同步 | - 同步 - | - 同步 - | ||
t5 | 在每个实例中都找到了这两个哈希 | HGETALL doc1 1) "field2" 2) "b" 3) "field1" 4) "a" |
HGETALL doc1 1) "field2" 2) "b" 3) "field1" 4) "a" |
||
t6 | 在每个实例中搜索“a”,找到两个文档 | FT.Search idx "a" 1) 1 2) doc1 |
FT.Search idx "a" 1) 1 2) doc1 |
实际结果是您拥有一个具有高度一致性的地理分布式数据库,并且可以在任何实例上运行搜索操作。