Tak, redis jest do tego dobry. Ale żeby zrozumieć istotę rzeczy, istnieją zasadniczo dwa podejścia do buforowania. W zależności od tego, czy używasz frameworka (i którego) czy nie, możesz mieć pierwszą opcję dostępną w standardzie lub przy użyciu wtyczki:
- Cachowe zapytania do bazy danych, czyli - wybrane zapytania i ich wyniki będą przechowywane w redis dla szybszego dostępu przez określony czas lub do wyczyszczenia cache (przydatne po aktualizacji bazy danych). W tym przypadku możesz użyć wbudowanego buforowania zapytań mysql, będzie to prostsze niż użycie dodatkowego magazynu klucz-wartość, lub możesz nadpisać domyślną integrację bazy danych własną klasą korzystającą z pamięci podręcznej (na przykład http://pythonhosted.org /johnny-cache/).
- Buforowanie niestandardowe, czyli tworzenie własnych struktur do przechowywania w pamięci podręcznej i okresowe lub ręczne uzupełnianie ich danymi pobranymi z bazy danych. Jest bardziej elastyczny i potencjalnie bardziej wydajny, ponieważ można korzystać z wbudowanych funkcji redis, takich jak listy lub posortowane zestawy, które znacznie zmniejszają koszty aktualizacji. Wymaga nieco więcej kodowania, ale zwykle daje lepsze wyniki, ponieważ jest bardziej spersonalizowany. Dobrym przykładem jest utrzymywanie najlepszych artykułów w postaci listy identyfikatorów redis, a następnie uzyskiwanie dostępu do zserializowanych artykułów o podanym identyfikatorze z redis. Możesz zachować ten artykuł nieznormalizowany - tj. obiekt serializowany może zawierać identyfikator użytkownika, a także nazwę użytkownika, dzięki czemu możesz ograniczyć do minimum obciążenie dodatkowych zapytań.
To do ciebie należy decyzja, które podejście wybrać, ja osobiście prawie zawsze wybieram podejście numer dwa. Ale oczywiście wszystko zależy od tego, ile masz czasu i co aplikacja ma robić - równie dobrze możesz zacząć od buforowania zapytań mysql, a jeśli wyniki nie są wystarczająco dobre, przejdź do redis i niestandardowego buforowania.