Spis treści:

Bezpłatny kurs: „Szybki start z V Python»
Naucz się więcejRedis (REmote DIctionary Server) to nierelacyjny system zarządzania bazą danych (DBMS) w pamięci, który wykorzystuje model przechowywania danych oparty na wartościach kluczowych. To rozwiązanie idealnie nadaje się do aplikacji o wysokiej wydajności, które wymagają szybkiego dostępu do danych. Redis obsługuje różnorodne struktury danych, w tym ciągi znaków, listy, zestawy i tablice skrótów, co czyni go wszechstronnym narzędziem programistycznym. Ze względu na swoją szybkość i wydajność, Redis jest często używany w aplikacjach internetowych, buforowaniu danych, zarządzaniu sesjami i systemach wymagających szybkiego przetwarzania informacji.
Redis różni się od relacyjnych baz danych architekturą i podejściem do przechowywania danych. W przeciwieństwie do tradycyjnych systemów relacyjnych, które wykorzystują tabele i relacje między nimi, Redis jest magazynem danych opartym na wartościach kluczowych. To znacznie przyspiesza operacje odczytu i zapisu, ponieważ dane są przechowywane w pamięci i można je szybko pobrać.
Co więcej, Redis obsługuje różne struktury danych, takie jak ciągi znaków, listy, zestawy i haszy, co czyni go elastycznym narzędziem do tworzenia aplikacji. Jego możliwości publikowania/subskrybowania, a także mechanizmy pracy z danymi tymczasowymi, takimi jak klucze tymczasowe i zdarzenia, zapewniają programistom potężne narzędzia do tworzenia wydajnych i skalowalnych aplikacji.
Dlatego Redis jest idealnym wyborem do zadań wymagających dużej szybkości przetwarzania danych i elastyczności w zarządzaniu różnymi typami informacji.
- wyższa wydajność (dzięki przechowywaniu danych w pamięci RAM serwera, liczba wykonywanych operacji znacznie wzrasta);
- brak języka SQL (alternatywą są skrypty Lua);
- elastyczność (dane nie są przechowywane w sztywnych strukturach (tabelach), ale w wygodniejszych (ciągach, listach, haszach, zestawach, zestawach sortowanych), co ułatwia pracę programistom);
- lepsza skalowalność.
Redis, mimo że jest potężnym narzędziem do buforowania i przechowywania danych w pamięci, rzadko jest używany jako główny magazyn danych w dużych systemach. Wynika to z niewystarczającego wsparcia dla Wymagania ACID, co prowadzi do braku pełnej gwarancji integralności danych. W rezultacie programiści wolą używać Redis w połączeniu z innymi systemami zapewniającymi niezawodne, długoterminowe przechowywanie danych, szczególnie w aplikacjach o znaczeniu krytycznym.
Do czego służy Redis?
Redis jest najczęściej używany do następujących zadań:
Buforowanie danych w celu przyspieszenia dostępu do często żądanych informacji. Może to znacznie zmniejszyć obciążenie baz danych i poprawić wydajność aplikacji.
Przechowywanie sesji użytkowników, co umożliwia szybkie zarządzanie stanem sesji i zapewnia wysoką dostępność danych.
Organizowanie kolejek komunikatów, co pomaga we wdrażaniu asynchronicznego przetwarzania zadań i poprawia skalowalność systemu.
Przechowywanie danych tymczasowych i statystyk, takich jak metryki i zdarzenia, co umożliwia szybką analizę i wizualizację danych.
Praca z rzeczywistymi danymi w czasie rzeczywistym, na przykład w celu systemy rekomendacji lub analityka.
Redis można również wykorzystać do przechowywania struktur danych, takich jak listy, zestawy i skróty, co rozszerza jego zastosowanie w różnych scenariuszach programistycznych.
- do przechowywania sesji użytkowników (fragmentów HTML stron internetowych lub pozycji w koszyku sklepu internetowego);
- do przechowywania danych pośrednich (strumieni wiadomości, ankiet, tabel wyników);
- jako pośrednika wiadomości (strategia „publish-subscribe” umożliwia tworzenie kanałów informacyjnych, czatów grupowych);
- jako systemu DBMS dla małych aplikacji, blogów;
- do buforowania danych z głównej pamięci masowej, co znacznie zmniejsza obciążenie relacyjnej bazy danych;
- do przechowywania „szybkich” danych – gdy szybkość ma znaczenie, a opóźnienia transmisji są krytyczne (analityka i analiza danych, usługi finansowe i handlowe).
Jak zacząć korzystać z Redis
Uruchomienie Redis w kontenerze Docker to najłatwiejszy i najwygodniejszy sposób wdrożenia tej bazy danych. Docker pozwala szybko i efektywnie zarządzać środowiskami programistycznymi i testowymi. Jeśli dopiero zaczynasz przygodę z Dockerem, zalecamy zapoznanie się z podstawami. Pomoże Ci to zrozumieć, w jaki sposób konteneryzacja upraszcza pracę z aplikacjami takimi jak Redis.
Uruchom kontener za pomocą następującego polecenia:
Sprawdźmy, czy kontener został pomyślnie uruchomiony.

Otwórz nową sesję i uruchom interfejs wiersza poleceń (CLI), aby rozpocząć pracę z systemem. Interfejs wiersza poleceń (CLI) umożliwia wprowadzanie poleceń i zarządzanie systemem za pomocą poleceń tekstowych, co pozwala na efektywne wykonywanie różnych zadań i operacji. Korzystanie z interfejsu CLI często upraszcza interakcję z systemem i zwiększa produktywność, zwłaszcza podczas wykonywania złożonych operacji lub automatyzacji procesów.

Aby pracować z Redis, możesz przejść bezpośrednio do konsoli. Umożliwi to łatwe wykonywanie poleceń i zarządzanie danymi w bazie danych. Konsola Redis zapewnia interaktywny interfejs do wykonywania różnych operacji, takich jak dodawanie, aktualizowanie i usuwanie kluczy i wartości. Korzystanie z konsoli upraszcza testowanie i debugowanie oraz pozwala szybko uzyskać wyniki poleceń. Aby rozpocząć, wystarczy otworzyć terminal i wpisać polecenie uruchomienia Redis, po czym można wprowadzać polecenia bezpośrednio w konsoli.

Jesteśmy gotowi do rozpoczęcia pracy z Redis. Redis to wydajny system zarządzania bazami danych w pamięci. Idealnie nadaje się do aplikacji wymagających szybkiego przetwarzania danych i niskich opóźnień. Korzystanie z Redis pozwala na efektywne zarządzanie buforowaniem, sesjami i kolejkami zadań. Dzięki swojej prostocie i elastyczności Redis stał się popularnym wyborem wśród programistów, którzy chcą zoptymalizować wydajność swoich aplikacji. Jesteśmy przekonani, że współpraca z Redis pomoże nam osiągnąć nowe szczyty w rozwoju oprogramowania.
Podstawowe polecenia
Redis oferuje szeroki zakres operacji na różnych strukturach danych, w tym na ciągach znaków, listach, zestawach, tablicach skrótów i zestawach uporządkowanych. Te funkcje czynią Redis potężnym narzędziem do zarządzania danymi w czasie rzeczywistym i optymalizacji wydajności aplikacji. Obsługa różnych typów danych pozwala programistom skutecznie rozwiązywać problemy związane z przechowywaniem i przetwarzaniem informacji.
Podstawowe operacje na tablicach skrótów są kluczowe dla zrozumienia ich działania. Tabele skrótów to struktury danych, które umożliwiają szybkie wstawianie, usuwanie i pobieranie elementów. Wykorzystują one funkcję skrótu do przekształcania kluczy w indeksy tablic, co pozwala na efektywne zarządzanie danymi.
Do ważnych operacji należą dodawanie nowego elementu, usuwanie istniejącego elementu oraz wyszukiwanie według klucza. Podczas dodawania elementu funkcja skrótu oblicza indeks, pod którym zostanie umieszczony nowy element. Usuwanie odbywa się podobnie: indeks jest obliczany na podstawie klucza, a element o tym indeksie jest usuwany. Wyszukiwanie elementów również odbywa się za pomocą funkcji skrótu, co przyspiesza i usprawnia proces.
Należy pamiętać, że wydajność tablic skrótów może zależeć od funkcji skrótu i zarządzania kolizjami, które również należy wziąć pod uwagę podczas pracy z nimi. Wybór odpowiedniej funkcji skrótu odgrywa znaczącą rolę w minimalizacji kolizji i zapewnieniu optymalnej wydajności struktury danych.
Dlatego zrozumienie podstawowych operacji na tablicach skrótów pozwala na lepsze ich wykorzystanie w różnych aplikacjach i optymalizację zarządzania danymi.
HSET to polecenie używane w Redis do przechowywania wartości powiązanej z określonym kluczem. Za pomocą HSET można efektywnie przechowywać i zarządzać danymi w postaci skrótów. To polecenie umożliwia dodawanie lub aktualizowanie wartości w skrócie, co jest przydatne podczas pracy z tablicami asocjacyjnymi. Za pomocą HSET można przechowywać dane, takie jak profile użytkowników lub ustawienia, ułatwiając dostęp do informacji i ich modyfikację. Korzystanie z HSET zapewnia wysoką wydajność i szybkie pobieranie danych, co jest ważnym aspektem podczas tworzenia aplikacji wymagających przetwarzania dużych ilości informacji. W tym przykładzie utworzyliśmy obiekt person1 zawierający dwa pola: imię i nazwisko oraz wiek, z których każde ma swoje własne wartości. Obiekty w programowaniu pozwalają na wygodne strukturyzowanie danych, co usprawnia pracę z nimi. Tworzenie obiektu z polami takimi jak imię i nazwisko oraz wiek jest powszechną praktyką podczas pracy z informacjami o użytkownikach lub postaciach. HGET to polecenie służące do pobierania wartości według klucza w określonym polu. Ta funkcja umożliwia pobieranie danych z magazynu klucz-wartość, co czyni ją niezbędnym narzędziem do pracy z bazami danych takimi jak Redis. Dzięki HGET można efektywnie uzyskiwać dostęp do określonych danych, minimalizując czas reakcji i poprawiając wydajność aplikacji. Korzystając z HGET, programiści mogą łatwo zarządzać informacjami o potrzebnych im elementach i pobierać je, co jest szczególnie przydatne w scenariuszach wymagających szybkiego dostępu do określonych danych.
Pobraliśmy wartość pola imię z klucza person1.
HGETALL to polecenie używane w Redis do pobierania wszystkich par klucz-wartość z magazynu danych. Umożliwia ono pobranie pełnego zestawu danych powiązanych z określonym kluczem, co jest przydatne podczas pracy z haszami. Po uruchomieniu tego polecenia otrzymasz wszystkie pola i odpowiadające im wartości w jednym żądaniu, co znacznie upraszcza interakcję z danymi. Użycie HGETALL może poprawić wydajność pracy z Redis, zwłaszcza gdy musisz pobrać wszystkie dane powiązane z określonym hashem.
Pobrano wartości wszystkich pól klucza person1.
HKEYS i HVALS to polecenia służące do pobierania wszystkich kluczy i odpowiadających im wartości z bazy danych. Polecenie HKEYS zwraca listę wszystkich kluczy przechowywanych w określonej strukturze danych, a polecenie HVALS zapewnia dostęp do wszystkich wartości powiązanych z tymi kluczami. Korzystanie z HKEYS i HVALS umożliwia efektywne pobieranie informacji z magazynów danych, co czyni je niezbędnymi narzędziami do pracy z bazami danych. Polecenia te zapewniają szybki dostęp do danych i pozwalają programistom optymalizować interakcje z bazami danych. Prawidłowe użycie kluczy HKEYS i HVALS może znacząco poprawić wydajność aplikacji i uprościć przetwarzanie danych.
Aby efektywnie pracować z pozostałymi strukturami danych, zapoznaj się z oficjalnym przewodnikiem. Zawiera on cenne zalecenia i praktyczne wskazówki, które pomogą Ci zoptymalizować przetwarzanie danych i poprawić wydajność Twoich aplikacji. Szczegółowa analiza materiału pozwoli Ci lepiej zrozumieć zasady pracy z różnymi strukturami danych i zastosować zdobytą wiedzę w praktyce.
Transakcje
Transakcje w Redis nie gwarantują integralności danych, ponieważ błąd jednej operacji w bloku transakcji nie uniemożliwia wykonania innych operacji. Oznacza to, że jeśli wystąpi błąd w jednym z poleceń transakcji, inne polecenia mogą zostać wykonane pomyślnie, co potencjalnie może prowadzić do niespójności danych. Dlatego użytkownicy Redis powinni wziąć ten aspekt pod uwagę podczas projektowania systemów, w których integralność danych ma kluczowe znaczenie.
Po wykonaniu polecenia multi, interfejs redis-cli odpowiadał na każde kolejne polecenie statusem QUEUED. Po uruchomieniu polecenia exec otrzymaliśmy wyniki wykonania wszystkich poleceń w kolejce.
Aby anulować transakcję w Redis, należy użyć polecenia discard. To polecenie zatrzymuje wszystkie polecenia w kolejce do tego momentu i przywraca Redis do normalnego działania. Aby zainicjować nową transakcję, należy ponownie wykonać polecenie multi.
Ważne jest, aby zrozumieć, że gdy polecenie zostanie umieszczone w kolejce i będzie poprawne składniowo, nawet jeśli wystąpi błąd podczas wykonywania, pozostałe polecenia zostaną wykonane. Jeśli jednak polecenie nie zostanie umieszczone w kolejce z powodu nieważności i napotka błąd podczas fazy kolejkowania, Redis odrzuci blok transakcji bez oczekiwania na wywołanie polecenia exec. Jeśli spróbujesz wykonać polecenie exec po tym, otrzymasz komunikat informujący, że transakcja została odrzucona z powodu wcześniej napotkanych błędów. Takie zachowanie Redis podkreśla wagę starannego sprawdzania poprawności poleceń przed ich wykonaniem, aby uniknąć odrzucenia całej transakcji.
Redis skutecznie zarządza błędami w transakcjach, zapewniając niezawodność i integralność danych. Podczas wykonywania transakcji Redis korzysta z mechanizmu o nazwie MULTI/EXEC. Po uruchomieniu transakcji poleceniem MULTI, wszystkie kolejne polecenia są umieszczane w kolejce i nie są wykonywane do momentu wywołania polecenia EXEC. Jeśli wystąpi błąd w jednym z poleceń przed wykonaniem polecenia EXEC, Redis anuluje wszystkie polecenia dodane do kolejki, co zapobiega częściowemu wykonaniu.
Jeśli podczas transakcji wystąpi błąd, Redis zwraca komunikat o błędzie, umożliwiając użytkownikom poprawienie zapytań i ponowne zainicjowanie transakcji. W ten sposób Redis zapewnia spójność danych, nawet jeśli niektóre polecenia nie mogą zostać wykonane. Dzięki temu Redis jest niezawodnym narzędziem do pracy z transakcjami w aplikacjach, w których integralność danych jest ważna.
Aby uzyskać więcej informacji na temat obsługi błędów transakcji przez Redis i efektywnego wykorzystania możliwości systemu, zapoznaj się z oficjalną dokumentacją.
Mechanizm subskrypcji
System pozwala jednemu użytkownikowi utworzyć kanał do publikowania wydarzeń i wiadomości, podczas gdy inny użytkownik może subskrybować ten kanał i uzyskiwać dostęp do jego zawartości. Ten mechanizm upraszcza tworzenie czatów i wymianę informacji między uczestnikami.
Mechanizm subskrypcji nie gwarantuje dostarczenia wiadomości. Przesyłamy wiadomość na kanał, ale nie możemy zagwarantować, kto ją odbierze ani czy zostanie zaakceptowana. Należy o tym pamiętać i unikać korzystania z subskrypcji w sytuacjach, w których ważna jest rzetelna informacja zwrotna.
Klient subskrybuje kanał za pomocą polecenia. Ta operacja umożliwia użytkownikowi otrzymywanie aktualizacji i wiadomości z kanału, zapewniając mu dostęp do wszystkich nowych publikacji i wydarzeń. Subskrypcja kanału otwiera dostęp do unikalnych treści, które mogą obejmować filmy, artykuły i inne materiały przygotowane dla subskrybentów. Aby zasubskrybować kanał, klient musi wykonać określone czynności, które zazwyczaj obejmują wpisanie polecenia w odpowiednim polu lub kliknięcie przycisku subskrypcji. Subskrypcja kanału to ważny krok, który pozwala pozostać w kontakcie z interesującymi Cię treściami i nie przegapić ważnych aktualizacji.
Inny klient publikuje swoje wiadomości w następujący sposób:
Wartość całkowita 1 w tym kontekście reprezentuje liczbę subskrybentów, którzy otrzymali wiadomość po jej opublikowaniu.
W rezultacie konsola pierwszego klienta wyświetli wprowadzoną wiadomość.



