Starting with RediSearch 2.x, supported in Redis Enterprise Software (RS) 6.0 and later, you can enable search and query for Active-Active databases at the time of creation.

You can run search operations on any instance of an Active-Active database.

How it works

  1. Create an Active-Active database with RediSearch 2.x enabled.
  2. Create the index on each instance of the database.
  3. If you are using synonyms, you need to add them to each replica.
  4. The index is maintained by each instance outside of the database keyspace, so only updates to the hashes in the databases are synchronized.

Command compatibility

Active-Active databases do not support the following search and query commands:

Example

Here’s an example to help visualize Active-Active search and query:

TimeDescriptionCRDB Instance1RediSearch Instance 1CRDB Instance 2RediSearch Instance 2
t0Create the index on each instanceFT.CREATE idx ….FT.CREATE idx ….
t1Add doc1 as a hash on instance 1; RediSearch indexes doc1 on instance 1HSET doc1 field1 “a”(Index doc1 field1 “a”)
t2Add doc2 as a hash on instance 2; RediSearch indexes doc2 on instance 2HSET doc1 field2 “b”(Index doc1 field2 “b”)
t3Searching for “a” in each instance only finds the result in instance 1FT.Search idx “a”
1) 1
2) doc1
FT.Search idx “a”
1) 0
t4Active-Active synchronization- Sync -- Sync -
t5Both hashes are found in each instanceHGETALL doc1
1) “field2”
2) “b”
3) “field1”
4) “a”
HGETALL doc1
1) “field2”
2) “b”
3) “field1”
4) “a”
t6Searching for “a” in each instance finds both documentsFT.Search idx “a”
1) 1
2) doc1
FT.Search idx “a”
1) 1
2) doc1

The practical result is that you have a geo-distributed database with a high level of consistency that can also run search operations on any instance.