Popularny silnik pamięci masowej Redis to doskonałe i niezbędne narzędzie w arsenale każdego programisty. Silnik pamięci masowej w pamięci umożliwia niezwykle szybkie przechowywanie i pobieranie danych, do imponujących 32 milionów zapytań na sekundę, co czyni go doskonałym uzupełnieniem każdego głównego silnika bazy danych.
Zanurzmy się i dowiedzmy, jak przyspieszyć nasze operacje online.
Redis: Plusy kontra Wady
Największą zaletą Redis jest to, że jest to magazyn danych wyłącznie w pamięci , co oznacza, że jest niesamowicie szybki, ponieważ baza danych jest przechowywana w pamięci RAM, dzięki czemu nie są wymagane żadne operacje we/wy plików na dysku twardym.
Inne dodatkowe korzyści to prostota, obsługa klastrów za pośrednictwem klastra Redis, a także obsługa ośmiu różnych typów danych, zapewniając elastyczność niezbędną do przechowywania danych i zarządzania nimi w razie potrzeby.
Jednak jego największym minusem jest również fakt, że jest to wyłącznie magazyn danych w pamięci, dlatego ma ograniczenia dotyczące rozmiaru. Zależy to od infrastruktury serwera, ale ze względu na ten artykuł i prostotę, typowa baza danych Redis będzie zawierać maksymalnie 2-4 GB danych.
Oznacza to, że Redis jest używany do uzupełniania popularnych silników baz danych, takich jak mySQL, PostgreSQL i MongoDB, i nie jest przeznaczony jako zamiennik. Główne zastosowania Redis obejmują pamięć podręczną, tymczasowe/ostatnie dane, które wygasną w krótkim czasie lub małe fragmenty danych, do których często uzyskuje się dostęp.
Jak zainstalować Redis
Zakładając, że używasz Ubuntu lub dowolnej dystrybucji Linuksa, która zawiera polecenie apt-get , aby zainstalować Redis, po prostu uruchom następujące polecenie w terminalu:
sudo apt-get install redis-server
Następnie sprawdź, czy Redis został pomyślnie zainstalowany. W terminalu uruchom polecenie:
redis-cli --version
Powinno to wydrukować wersję Redis, której używasz, i zakładając, że tak, uruchom następujące polecenie, aby połączyć się z Redis:
redis-cli
To da ci niestandardowy monit Redis w terminalu, który wygląda mniej więcej tak:
127.0.0.1:6379>
Polecenia ciągów
Każde wejście do Redis jest identyfikowane za pomocą klucza, który może być dowolnym ciągiem innym niż biały znak. Ciągi zawierają tylko jedną wartość i na przykład uruchom następujące polecenia w monicie Redis, aby ustawić wartość na kilka kluczy.
127.0.0.1:6379> set full_name "John Doe" 127.0.0.1:6379> set units 5
Możesz teraz wyświetlić listę wszystkich kluczy znajdujących się obecnie w bazie danych Redis za pomocą polecenia keys.
127.0.0.1:6379> keys *
Spowoduje to wyświetlenie dwóch wcześniej ustawionych kluczy, pełnej nazwy i jednostek . Możesz zobaczyć wartość tych kluczy za pomocą polecenia get.
127.0.0.1:6379> get full_name "John Doe" 127.0.0.1:6379> get units 5
Usuwanie kluczy można łatwo wykonać za pomocą polecenia del.
127.0.0.1:6379> del full_name
Możliwe jest również szybkie zwiększenie liczby całkowitej za pomocą polecenia hincrby . Następujące czynności zwiększą klucz „jednostek” z 5 do 7.
127.0.0.1:6379> incrby units 2
Lista poleceń
Listy w Redis są jednowymiarowymi tablicami o określonej kolejności i pozwalają na duplikowanie elementów w różnych pozycjach listy. Pozycje można dodawać z lewej lub prawej strony listy za pomocą poleceń lpush i rpush .
127.0.0.1:6379> lpush colors blue 127.0.0.1:6379> rpush colors red yellow green
Jak widać z powyższego przykładu, możesz umieścić wiele pozycji na liście w ramach jednego polecenia. Możemy teraz wyświetlić wszystkie pozycje na liście za pomocą polecenia lrange .
127.0.0.1:6379> lrange colors 0 -1
Na końcu polecenia znajdują się dwie liczby całkowite, pierwsza definiująca pozycję na liście, od której zaczyna się, a druga to liczba elementów do zwrócenia, gdzie -1 oznacza wszystkie elementy. Wynikiem powyższego polecenia będzie niebieski, czerwony, żółty, zielony .
Możesz także usunąć elementy z dowolnego końca listy za pomocą poleceń lpop i rpop .
127.0.0.1:6379> lpop colors blue 127.0.0.1:6379> rpop colors green
Możesz również uzyskać liczbę elementów na liście za pomocą polecenia llen .
127.0.0.1:6379> llen colors (integer) 2
Na koniec możesz usunąć element z listy za pomocą polecenia lrem .
127.0.0.1:6379> lrem colors 1 green (integer) 1
Polecenie lrem zaczyna się od nazwy listy, po której następuje liczba wystąpień do usunięcia oraz nazwa elementu do usunięcia. Zwróci liczbę znalezionych wystąpień i usuniętych z listy.
Polecenia haszujące
Jednym z najpopularniejszych typów danych w Redis są skróty, które umożliwiają przechowywanie wielu par klucz-wartość w ramach jednego wpisu. Klucz nie musi już istnieć, a pary klucz-wartość definiuje się w dowolnym momencie za pomocą polecenia hset .
127.0.0.1:6379> hset user:581 full_name "Jane Doe" 127.0.0.1:6379> hset user:581 points 500
Za pomocą polecenia hmset można również zdefiniować wiele par klucz-wartość skrótu w ramach jednego polecenia.
127.0.0.1:6379> hmset user:581 email [email protected] gender F
Skrót zidentyfikowany przez użytkownika klucza :581 ma teraz łącznie cztery pary klucz-wartość, z których wszystkie można łatwo pobrać za pomocą polecenia hgetall .
127.0.0.1:6379> hgetall user:581 1) "full_name" 2) "Jane Doe" 3) "points" 4) "500" 5) "email" 6) "[email protected]" 7) "gender" 8) "F"
Możesz również uzyskać wartość pojedynczej pary klucz-wartość w hashu za pomocą polecenia get .
127.0.0.1:6379> hget user:581 email "[email protected]"
W przypadku dowolnych liczb całkowitych w hashu można je zwiększyć o określoną wartość za pomocą polecenia code hincrby .
127.0.0.1:6379> hincrby user:581 points 20 (integer) 520
Wartość klucza punktów w hashu została teraz zwiększona o 20 do 520. Pojedyncza para klucz-wartość w hashu może zostać usunięta za pomocą polecenia hdel .
127.0.0.1:6379> hdel user:581 gender
Alternatywnie możesz również usunąć hash całkowicie zawierający wszystkie pary klucz-wartość za pomocą polecenia del .
127.0.0.1:6379> del user:581
Wygasające klucze Redis
Kolejną doskonałą cechą Redis jest możliwość automatycznego wygaśnięcia kluczy po określonej liczbie sekund za pomocą polecenia wygaśnięcia . Pamiętaj, że możesz wygasnąć tylko pełne klucze, a nie pojedyncze elementy na liście lub hash. Na przykład:
127.0.0.1:6379> expire full_name 10
To ustawi czas wygaśnięcia na 10 sekund dla klucza full_name , który utworzyłeś w sekcji ciągów. Po uruchomieniu powyższego polecenia odczekaj 10 sekund, a następnie spróbuj ponownie pobrać wartość klucza.
127.0.0.1:6379> get full_name (nil)
Zgodnie z oczekiwaniami klucz wygasł, w wyniku czego otrzymujemy wartość null.
Połącz się z Redis za pomocą PHP
Teraz, gdy znasz już podstawy przechowywania i pobierania danych za pomocą Redis, nadszedł czas, aby połączyć je z oprogramowaniem. Wszystkie języki programowania mają moduły/rozszerzenia dla Redis, ale w tym przykładzie użyjemy PHP.
Najpierw musisz zainstalować rozszerzenie PHP-Redis, ponieważ nie jest ono domyślnie instalowane. W terminalu uruchom polecenie.
sudo apt-get install php-redis
Po zainstalowaniu upewnij się, że uruchomiłeś ponownie PHP-fpm, aby rozszerzenie zostało poprawnie załadowane. Oto trochę kodu PHP, który łączy się z Redis i współpracuje z nim.
<> // Connect to redis $conn = new redis(); try { $conn->connect('127.0.0.1', 6379, 5); } catch (RedisException $e) { die("Unable to connect to redis"); } // Set string $conn->set('country', 'Canada'); // Get string $value = $conn->get('country'); echo "Country is: $value "; // Define a profile $profile = [ 'username' => 'mike', 'full_name' => 'Mike Smith', 'email' => '[email protected]', 'country' => 'Australia' ]; // Create a hash $conn->hmset('user:188', $profile); // Get all values of the profile hash $values = $conn->hgetall('user:188'); print_r($values); // Get only the e-mail address $email = $conn->hget('user:188', 'email'); echo "E-mail is: $email "; // Expire the hash in 15 seconds $conn->expire('user:188', 15);
Powyższy przykładowy kod powinien być dość prosty. Najpierw łączy się z Redis z limitem czasu wynoszącym 5 sekund, a następnie przystępuje do ustawiania i pobierania ciągu i skrótu. Wszystkie polecenia Redis można wykonać za pomocą OOP , wywołując je bezpośrednio z obiektu Redis, jak pokazano powyżej.
Jesteś na dobrej drodze!
Gratulacje, nauczyłeś się podstaw przechowywania i pobierania danych z niesamowitą szybkością za pomocą silnika pamięci masowej Redis, w tym sposobu łączenia się z Redis i korzystania z niego za pomocą PHP.
Należy pamiętać, że ten artykuł obejmuje tylko podstawowe informacje, a strona dokumentacji Redis Data Types jest doskonałym miejscem do dalszego odkrywania Redis i wszystkich jego funkcji.