Artykuły / Redis – otwarta baza NoSQL przechowująca dane w pamięci

b6e2461a-ef64-af83-b357-849550af12ab

Wprowadzenie

Redis (skrót od Remote Dictionary Service) jest otwartą (ang. open source), pamięciową (ang. in-memory) bazą NoSQL przechowującą dane jako pary klucz – wartość. Baza ta przechowuje dane w pamięci RAM, dzięki czemu charakteryzuje się wysoką wydajnością. W porównaniu do serwera Memcached zapewnia trwałość danych (opcjonalnie) poprzez ich zapis na dysku twardym.

Redis nie jest typowym pośrednikiem komunikatów (ang. message broker), jednakże może stanowić jego namiastkę z uwagi na posiadane właściwości.

Struktury danych

Redis posiada obsługę następujących struktur danych:

  • łańcuchy (ang. strings) bezpieczne pod względem binarnym zdolne do przechowywania zarówno zwykłego tekstu jak i danych binarnych typu JPEG,
  • listy (ang. list), w których możemy dodawać/pobierać dane na z początku (lewa strona) lub końcu (prawa strona);
  • zestaw (ang. set) będący czymś w rodzaju listy, która nie posiada, ani początku, ani końca;
  • posortowane zestawy (ang. sorted set),
  • skróty (ang. hashes) mapujące dane w postaci klucz-wartość,
  • tablice bitów (ang. bit arrays/bitmaps),
  • i inne.

Poza tym ta baza NoSQL posiada wbudowane mechanizmy replikacji, obsługę skryptów Lua, transakcji, różne rodzaje utrwalania danych na dysku twardym oraz wsparcie dla rozwiązań o wysokiej dostępności (ang. high availability).

Zastosowania

Twórcy tego systemu NoSQL wyróżniają trzy podstawowe zastosowania:

  • pamięciowa baza danych przechowująca je w postaci różnych struktur (alternatywa dla relacyjnych baz danych),
  • cache (alternatywa dla serwera Memcached),
  • pośrednik komunikatów (alternatywa dla np. RabbitMQ).

Serwer Redis może być również wykorzystywany jako warstwa przechowująca sesje użytkowników zamiast bazy danych lub serwera Memcached.

Jako prawdziwy przykład możliwości zastąpienia pośrednika komunikatów RabbitMQ poprzez Redis można podać aplikację do monitorowania stanu pracy serwerów o nazwie Sensu - w której to - jako tzw. warstwę transportową można wybrać jeden z wymienionych systemów.

Tomasz Kuter

Web Developer z ponad 8-letnim, komercyjnym doświadczeniem w tworzeniu stron i aplikacji internetowych oraz paneli administracyjnych w PHP, JavaScript, HTML i CSS.
Aktualnie zainteresowany architekturą mikroserwisów, które umożliwiają budowanie skalowalnych aplikacji internetowych.