AOF/RDB persistence changes

Hello.

We’ve had ongoing problems with AOF persistence. The problem is the AOF rewrite commands for our data structures - in the search index, the data is created implicitly by pushing documents to redisearch. However when persisting the index data structures to AOF these documents are not available to us, and if they are they are persisted as hash objects, so we cannot emit FT.ADD commands for them.

After multiple issues with AOF rewriting, we’ve decided that the next minor version of redisearch, 1.1.0, will remove AOF rewriting completely.

However we are not going to remove AOF! Don’t worry!

Redis 4.0 has a new persistence mode, of mixed RDB and AOF: AOF is used to persist commands on the fly, but instead of an AOF rewrite, redis emits an RDB every once in a while. This removes the needs for us to write two persistence routines for each data structures, and removes the needs for special commands to bypass the limitations mentioned above. So less code, less code paths, and more stabilty! hooray!

This is just a heads up. The next version will refuse to start if AOF is enabled and rdb preamble is not. If you’re working with AOF, just set the configuration value to enable this mode when upgrading to the next version. RediSearch user @tw-bert has already tried it in his servers and reports that it works just fine. I actually recommend that you do this even before the upgrade, parts of the AOF rewrite logic is broken and this is a good call regardless.

See the following issue for more details: https://github.com/RedisLabsModules/RediSearch/issues/290

Thanks!