Is redis stack right for me? Do I need to combine json, graph and search?

Hello everyone!
Admittedly this is a “Before getting started” question.

I don’t have much experience with redis in general, even less so with redis stack and the modules, so I was wondering if the stack might be the right direction or not for my project.

I need to create a project that will have about 30k entities between books, their translations and reviews, and "persons" and their various relationships.
A person can author many books, a book can be written by many persons.
The same persons can also translate, curate, edit and review books, they might also be written about in other books. Translations of books obviously have a relationship with the original book. Books might also be sequels of books. In my ignorant opinion these many many-to-many relationships kind of scream “graph”.

At the same time I need to be able to search for books by fuzzy matching their title, search for authors by fuzzy / phonetic matching their names, find books via full text search of their reviews, etc. So, I guess I would need redisearch to be able to index the graph?

I also need to list a bunch of books, filtered by a facet search (think genre, language, publishing year, etc), in paginated view of 100 books at a time, where the book titles are shown together with the names of their authors. In my understanding, this kind of search would be best done by redisjson? But still somehow joined with data from the graph (book title + authors name)?

So my question is: is using the redis stack a bad idea and should I just stick to mysql? I’ve googled for “redisearch and redisgraph”, but the only relevant article I’ve found is from 2019, writing about a demo at redisconf that says:

I should point out that the integration between RediSearch and RedisGraph is still early and not ready for production at the time of writing. I encourage you to figure out if this approach could meet your needs, with the understanding that the integration between RediSearch and RedisGraph will mature and expand in the coming months.

It’s just a lot to process for a redis noob :confused:

RedisGraph is indeed a good solution for you problem.

Your concern about muzzy matching is well addressed in RedisGraph, as RediSearch, beside being a standalone module, is also embedded within RedisGraph, so you can create full-text indexes are do fuzzy matching directly from RedisGraph.

The integration between RediSearch and RedisGraph is mature.

As for faceted search, one solution would be to implement it with cypher queries over the graph. Another option is to use both RedisGraph and RedisJSON, but then you’ll need to maintain both data structures which would be more complex I believe.

1 Like

Thanks a lot for your answer :slight_smile: