Mateusz Mazurek – programista z pasją

Czyli o użyciu Pythona i kilku innych technologii do tworzenia świetnej jakości aplikacji w oparciu o stabilny proces dostarczania oprogramowania.

Inżynieria oprogramowania Programowanie Programowanie webowe

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:
a w ramach prezentu otrzymasz całkowicie za darmo, dwa dokumenty PDF „6 (nie zawsze oczywistych) błędów popełnianych podczas nauki programowania” który jest jednym z efektów ponad siedmioletniej pracy i obserwacji rozwoju niejednego programisty oraz „Wstęp do testowania w Pythonie”, będący wprowadzeniem do biblioteki PyTest.
Jeśli to Cię interesuje to zapraszam również na swoje social media.

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!

Dzięki za wizytę,
Mateusz Mazurek

A może wolisz nowości na mail?

Subskrybuj
Powiadom o
guest

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
Inline Feedbacks
View all comments