搜索和查询Active-Active数据库
搜索和查询Active-Active数据库。
从 RediSearch 2.x 开始,在 Redis Enterprise Software (RS) 6.0 及更高版本中支持,您可以在创建时为 Active-Active 数据库 启用搜索和查询。
您可以在任何Active-Active数据库实例上运行搜索操作。
它是如何工作的
- 创建一个启用了RediSearch 2.x的Active-Active数据库。
- 创建索引在数据库的每个实例上。
- 如果您正在使用同义词,您需要将它们添加到每个副本中。
- 索引由每个实例在数据库键空间之外维护,因此只有对数据库中哈希的更新才会同步。
命令兼容性
Active-Active 数据库不支持以下搜索和查询命令:
Example
这里有一个例子可以帮助可视化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 | 主动-主动同步 | - 同步 - | - 同步 - | ||
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 |
实际结果是,您拥有一个具有高度一致性的地理分布式数据库,该数据库还可以在任何实例上运行搜索操作。