Istnieje wiele potencjalnych korzyści i potencjalnych wad używania Redis zamiast klasycznego RDBMS. W rzeczywistości są to bardzo różne zwierzęta.
Skupiając się tylko na potencjalnych wad:
Redis jest przechowywać w pamięci: wszystkie dane muszą zmieścić się w pamięci. RDBMS zwykle przechowuje dane na dyskach i buforuje część danych w pamięci. Za pomocą RDBMS możesz zarządzać większą ilością danych niż masz w pamięci. Z Redis nie możesz.
Redis to serwer struktury danych. Nie ma języka zapytań (tylko komendy) i nie ma wsparcia dla algebry relacyjnej. Nie możesz przesyłać zapytań ad-hoc (jak możesz używać SQL na RDBMS). Wszelkie dostępy do danych powinny być przewidywane przez programistę, a odpowiednie ścieżki dostępu do danych muszą być zaprojektowane. Brakuje dużej elastyczności.
Redis oferuje 2 opcje dla trwałości: zwykłe migawki i pliki tylko do dodania. Żadne z nich nie jest tak bezpieczne, jak prawdziwy serwer transakcyjny zapewniający przywracanie/cofanie rejestrowania, blokowanie sumy kontrolnej, odzyskiwanie punktu w czasie, funkcje flashback, itp ...
Redis oferuje tylko podstawowe zabezpieczenia (w zakresie praw dostępu) na poziomie instancji. Wszystkie RDBMS zapewniają drobnoziarniste listy kontroli dostępu dla poszczególnych obiektów (lub zarządzania rolami).
Unikalna instancja klasy Redis nie jest skalowalna. Działa tylko na jednym rdzeniu procesora w trybie jednowątkowym. Aby uzyskać skalowalność, należy wdrożyć i uruchomić kilka instancji Redis. Dystrybucja i sharding są wykonywane po stronie klienta (tzn. Programista musi się nimi zająć). Jeśli porównasz je z unikalną instancją Redis, większość RDBMS zapewnia większą skalowalność (zazwyczaj zapewnia równoległość na poziomie połączenia). Są one wielokrotnie przetwarzane (Oracle, PostgreSQL, ...) lub wielowątkowe (MySQL, Microsoft SQL Server, ...), czerpiąc korzyści z maszyn wielordzeniowych.
Tutaj mam tylko opisane główne wady, ale należy pamiętać, istnieje również wiele korzyści w użyciu Redis (bardzo szybki, dobre wsparcie współbieżności, niską latencję, protokół rurociąg, dobrze jest łatwo wdrożyć optymistyczne współbieżne wzorce, dobra użyteczność/stopień złożoności, doskonałe wsparcie od Salvatore'a i Pietera, pragmatyczne, nie-nonsensowne podejście, ...)
Dla twojego konkretnego problemu (wykresu), proponuję rzucić okiem na neo4J lub OrientDB, które są zaprojektowany specjalnie do przechowywania danych graficznych.