Redis i Python – dobrze dobrana para #1
Cześć!
Na przestrzeni ostatnich lat sporo się zmieniało w moim życiu. Zmiany te sprawiły, że zacząłem stosować podejście, w którym co jakiś czas przyglądam się temu jak żyję, co osiągnąłem, z czego zrezygnowałem i tak dalej. Cel jest prosty: sprawdzić, czy droga którą idę jest nadal tą, którą chcę iść. I ewentualnie skorygować.
Niedawno miałem okazję do takiego przeglądu. Doprowadziło mnie to do wielu wartościowych przemyśleń. Oczywiście jednym z analizowanych aspektów był ten blog. Było co przeglądać, bo jest tutaj ponad 200 wpisów! Blog ma 11 lat. Nie wszystkie wpisy są techniczne. Oczywiście nie wszystkie z tych technicznych trzymają wysoki poziom, bo 11 lat temu umiałem mniej niż teraz… Mógłbym się rozpisać. Ale do brzegu.
Przeglądałem te wpisy i doszło do mnie, że nigdzie nie ma wpisu poświęconego Redisowi. Jest to ogromne niedopatrzenie z mojej strony, bo uważam, że sam Redis jak i jego connectory, które są dostępne w Pythonie, to bardzo wygodne rozwiązania.
Ale od początku…
Czym jest Redis?
Nazwa Redis pochodzi od „Remote Dictionary Server”. A samo rozwiązanie to po prostu baza danych. Dokładniej baza typu NoSQL, przechowująca dane w formacie „klucz-wartość”.
Historia tego typu baz danych jest dość zabawna. Najpierw były postrzegane jako ciekawostka, by wraz z biegiem czasu, zacząć pojawiać się prawie wszędzie. Nawet tam, gdzie kompletnie nie pasują.
Zastosowania Redisa
Zastosować możesz go wszędzie, ale nie wszędzie się to opłaca. Takie typowe przypadki użycia to:
Cache
Redis jest szybki i można go skonfigurować tak, by trzymał wszystkie dane w pamięci, co powoduje, że staje się demonem szybkości, a co za tym idzie – dobrym wyborem jeśli chodzi o mechanizm cache’ujący.
Pośrednik komunikatów
Pośrednik komunikatów, czyli broker, to mechanizm, który transportuje komunikaty np. do kolejek. I tak na przykład Celery pozwala na użycie Redisa jako brokera.
Sesje użytkowników
Jako rozwiązanie alternatywne dla np. plików.
I wszystko co przyjdzie Ci do głowy…
…bo nikt nie będzie sprawdzać, czy zamykasz się w utartych ramach :)
Możliwości Redisa
Redis jest narzędziem prostym, ale nie prostackim, pozwala zrobić naprawdę dużo fajnych rzeczy, czym trochę przypomina mi Pythona.
Redis Sentinel
High availability, czyli wysoka dostępność, jest dostarczana wraz z narzędziem o nazwie Redis Sentinel. Poza oczywistym wymaganiem, żeby narzędzie radziło sobie z awariami, dostajemy kilka innych bonusów:
- Monitoring – sprawdzanie stanu poszczególnych instancji.
- Powiadomienia – Sentinel może powiadomić zdefiniowaną osobę o tym, że stało się coś złego.
- Konfiguracja – Sentinel może stanowić jedno źródło prawdziwej i oczekiwanej konfiguracji dla reszty instancji Redisa.
Transakcje
Redis dostarcza mechanizm transakcji. Gwarantuje on atomowość zdefiniowanego zestawu komend. Praca z transakcjami jest oparta o cztery komendy: MULTI, EXEC, DISCARD i WATCH – takie trochę odpowiedniki ROLLBACK, COMMIT, BEGIN itp.
Czekaj, stop!
Podoba Ci się to co tworzę? Jeśli tak to zapraszam Cię do zapisania się na newsletter:Jeśli to Cię interesuje to zapraszam również na swoje social media.
Jak i do ewentualnego postawienia mi kawy :)
Mechanizm PUB/SUB
Strasznie wygodny mechanizm wymiany komunikatów. A co ważne – wydajny. Zostawiam link do artykułu, gdzie jest to bardzo fajnie opisane.
Skrypty w LUA
Redis pozwala pisać skrypty w języku LUA (którego miałem okazję, w wyniku trochę pokrętnych historii, poznać jeszcze przed Redisem). Porównałbym to np. do procedur w SQLu.
Dodatkowe moduły
Tutaj to już jest przepiękna magia! Można doinstalować dodatkowe moduły do Redisa i wykorzystać go do wyszukiwania pełnotekstowego, dodawać nowe typy danych, czy nawet zastosować go do AI/ML! Lista dostępna jest tutaj – link.
I wiele innych…
…a części z nich pewnie i ja nie znam :)
Co dalej?
Wstęp teoretyczny mamy za sobą. Ten wpis jest pierwszym z właśnie rozpoczętej serii artykułów o pracy z Redisem w Pythonie. Kolejne pojawią się pewnie jakoś niedługo, jeszcze nie zdecydowałem ile ich będzie, ale postaram się pokazać coś fajnego!
Mateusz Mazurek
Pierwszy raz słyszę o Redis :) po Twoim wpisie muszę nadrobić wiedzę.
Cieszę się, że zaciekawiłem:)
Redis i Python to po prostu idealne połączenie! Dzięki temu zrozumiałem, jak efektywnie je integrować.
Dzięki!
Przydatne informacje na temat Redis i Python, teraz czuję się pewniej korzystając z tej kombinacji. Dzięki za jasne wyjaśnienia!