Cześć! 👊
W tym poradniku pokażę Wam w jaki sposób zainstalować bazę danych Redis na systemie Ubuntu 18.04 (na starszych jak i nowszych wersjach systemu sposób również będzie działał - może różnić się jedynie wersja repozytorium). W tym wątku jedynie opiszę czym jest Redis oraz instalację, a nie jego implementację w PHP czy innym języku.
ℹ️ Spis treści:
- Czym jest Redis?
- Zastosowanie, do czego mogę użyć Redisa?
- Instalacja serwera Redis na Ubuntu
- Zabezpieczenie dostępu do bazy Redis
- Koniec
1. Czym jest Redis? Redis (skrót od Remote Dictionary Service) jest magazynem danych typu klucz, tzw. pamięciową bazą NoSQL. Przechowywanie danych w pamięci RAM daje nam ekstremalną wydajność (absolutnie nieporównywalną np. z MySQL, porównanie tutaj przy zachowaniu stałości zapisanych danych (opcjonalnie, dzięki odpowiedniej konfiguracji) poprzez przenoszenie ich następnie na dysk twardy. Redis jest napisany w języku C. Inną definicją może być również to, że jest magazynem struktur danych w pamięci. W opinii wielu jest lepszy od np. Memcached, bo zapewnia ową stosunkowo łatwą w implementacji trwałość danych poprzez zapis na twardym dysku.
🤭 Redisa zainstalujesz na wszystkich serwerach KVM z oferty LVLUP. Użyj kodu CRAFTCODE.PL
w trakcie składania zamówienia i otrzymaj 10% zniżki! 🤑
2. Zastosowanie, do czego mogę użyć Redisa? Jak już wcześniej wspomniałem, Redis oferuje bardzo dużą wydajność. Dzięki temu jest przydatny np. przy:
- przechowywaniu sesji użytkowników na stronie,
- przechowywanie danych cache (czyli plików tymczasowych, przy których liczy się szybki czas dostępu, a nie długotrwały ich zapis),
- do skomplikowanych operacji na danych liczbowych w czasie rzeczywistym np. statystyk,
- i wiele innych...
W Minecrafcie z bazy Redis korzystają np. sektory, w których też liczy się wysyłania i odbierania pakietów między sektorami a oprogramowaniem je obsługującym (jedne z nich są dostępne publicznie wraz z kodem źródłowym tutaj - można też sprawdzić przykład implementacji Redisa w Javie).
3. Instalacja serwera Redis na Ubuntu Instalacja serwera Redis jest stosunkowo prosta i intuicyjna. Sprowadza się od wykonania kilku komend. Jeśli wykonujemy je nie z poziomu użytkownika root, pamiętajmy o dodaniu przed nimi polecenia sudo. ℹ️ Warto sprawdzić wersję pakietu dla Twojego systemu operacyjnego. Nowsze wersje niż te w oficjalnych repozytoriach Ubuntu można pobrać stąd, ale wymagają ręcznej instalacji.
- najpierw aktualizujemy listę pakietów i aktualnie zainstalowane:
apt update && apt upgrade
- instalujemy Redisa:
apt install redis-server
- konfigurujemy start Redisa przy następnym reboocie systemu:
systemctl enable --now redis-server.service
- do sprawdzenia statusu serwera, włączenia, wyłączenia, restartu służą następująco takie komendy:
service redis-server [status | start | stop | restart]
np.service redis-server start
(domyślnie po instalacji serwer powinien być już aktywny) - testujemy połączenie z serwerem:
redis-cli
jeśli wszystko działa w porządku, przejdziemy do konsoli Redisa, co możemy zauważyć po takim komunikacie:127.0.0.1:6379>
(możemy wtedy wpisać polecenieping
, aby upewnić się, że wszystko działa w porządku - jeśli tak, zwróci nam komunikat PONG):127.0.0.1:6379> ping PONG 127.0.0.1:6379>
I to w zasadzie wszystko z instalacji. Możemy dokonać dodatkowej konfiguracji i np. zmienić ilość alokowanej pamięci. Robimy to w pliku /etc/redis/redis.conf:
maxmemory 256mb
maxmemory-policy allkeys-lru
⚠️ Pamiętamy po zmianie ustawień o restarcie Redisa:
service redis-server restart
4. Zabezpieczenie dostępu do bazy Redis Tutaj możemy wykonać dwie podstawowe czynności. 😉
- po pierwsze, warto umożliwić dostęp do Redisa tylko lokalnie, czyli z angielskiego binding to localhost. Często ta opcja jest już ustawiona domyślnie, ale warto upewnić się. Należy więc naszym ulubionym edytorem tekstu w wierszu poleceń np. vim lub nano albo łącząc się przez SFTP zedytować plik konfiguracyjny. Przechodzimy do /etc/redis/redis.conf, szukamy poniższej linijki i upewniamy się, że mamy tak ustawione (jeżeli znajduje się przed tym znak # - usuwamy go!)
bind 127.0.0.1 ::1
⚠️ Uwaga! Pamiętamy, że przy takim ustawieniu nie będzie dostępu do bazy np. z innego serwera VPS.
- po drugie ustawiamy hasło dla Redisa.
W tym samym pliku w lokalizacji /etc/redis/redis.conf szukamy poniższej linijki, sprawdzamy, czy nie ma przed nią znaku # - jeśli jest, usuwamy go i domyślne hasło (które najpewniej będzie ustawione na foobared zmieniamy na inne, trudne, najlepiej losowo wygenerowane np. na stronie https://www.random.org/passwords/). Powinno to wyglądać na przykład tak:
requirepass q6e4Yk4d2WscGsK7x8sDsVML
⚠️ Uwaga! Po wykonaniu wszystkich czynności musimy ponownie uruchomić Redisa.
service redis-server restart
🔒 Aby sprawdzić nasze zabezpieczenia po pierwsze wpisujemy komendę netstat -lnp | grep redis
i patrzymy na jakim adresie nasłuchuje połączenia Redis (jeśli jest 127.0.0.1 - znaczy, że okej). Po drugie logując się znanym już nam poleceniem redis-cli
sprawdzamy, czy zapyta nas o hasło.
💬 Innymi, dodatkowymi sposobami na zabezpieczenie jest np. zmiana nazwy dla niebezpiecznych komend czyszczących dane itp. W podstawowej formie jednak obligatoryjnie wykonujemy opisane powyżej dwie czynności.
5. Koniec To na tyle! Jeśli macie jakieś uwagi co do treści poradnika, to oczywiście jestem otwarty. 😉 Data ostatniej aktualizacji: 21.05.2020 r.
🧐 Źrodła:
- wiedza własna
- logo z: https://redis.io/