Image for Redis 3 – wykorzystanie struktur danych

Redis 3 – wykorzystanie struktur danych

Czas czytania:

Redis udostępnia kilka podstawowych struktur danych. Należą do nich pola typu: tekst, lista, zbiór jako nieuporządkowana kolekcja tekstów, sortowane zbiory oraz hash’e.

Poniżej omówimy krótko każdy z nich.

Na początku jednak należy zainstalować środowisko Redis oraz bibliotekę PHP do jego obsługi. Po zainstalowaniu możemy zaczynać.

A by połączyć się z bazą tworzymy nowy obiekt i podając parametry łączymy się:

$obj = new Redis(); $obj->connect('127.0.0.1','6379',30);

1. Aby dodać zwykły tekst do bazy należy wykonać następującą funkcję

$obj->set(key,value); //gdzie key oznacza klucz po którym będziemy szukać, a value wartość składowaną.

przykład:

$obj->set('country','Poland');

Gdy chcemy zwrócić wartość z bazy wykorzystujemy funkcję get:

$obj->get(key); //podając jako key wcześniej utworzony klucz echo  $obj->get('country'); //zwróci ciąg znaków 'Poland'

2. Dodawanie/usuwanie elementów z listy.

Aby wykonywać powyższe operację mamy przygotowane odpowiednie funkcje:

lPush – dodanie elementu do początku listy

rPush – dodanie elementy do końca listy

lPop – usunięcie elementu z początku listy oraz zwrócenie go

rPop – usunięcie elementu z końca listy oraz zwrócenie go

Utwórzmy więc prostą listę krajów.

$obj->lPush('countries','Poland'); // [Poland]
$obj->lPush('countries','Mexico'); // [Mexico,Poland]
$obj->lPush('countries','Canada'); // [Canada,Mexico,Poland]
$obj->rPush('countries','Panama'); // [Canada,Mexico,Poland,Panama]
$obj->rPush('countries','USA');    // [Canada,Mexico,Poland,Panama,USA]

Aby pobrać listę w danym zakresie możemy wykorzystać funkcję

$obj->lGetRange('countriees',1,2); //[Mexico,Poland]

Jeśli chcemy pobrać i usunąć zdjąć z listy:

echo $obj->lPop('countries); //Canada oraz zostanie nam lista [Mexico,Poland,Panama,USA]] echo $obj->rPop('countries); //USA oraz zostanie nam lista [Mexico,Poland,Panama] 

Do obsługi lista biblioteka udostępnia szereg innych funkcji z którymi warto się zapoznać.

3. Jeśli chcemy zdefiniować zbiór wykorzystujemy funkcję

$obj->sAdd(key,value1,value2,value3,...); 
$obj->sAdd('cities','Warsaw','Paris','London');

Utworzony zbiór dostaniemy jako wynik funkcji

$obj->sGetMembers('cities'); //[Warsaw,Paris,London]

Do utworzonego zbioru możemy później  także dodawać elementy

$obj->sAdd('cities','Budapest');

4. Zbiory sortowane różnią się od zwykłych tym że podajemy wagę przy każdej wartości.

Analogicznie do poprzedniego przykładu

$obj->zAdd(key,score1,value1,score2,value2,score3,value3,...); 
$obj->sAdd('cities',10,'Warsaw',100,'Paris',50'London');

Wartości możemy pobrać standardowo w danym zakresie:

$obj->zRange('cities',0,3); //[Warsaw,Paris,London]

lub filtrując po wagach

$obj->zRangeByScore('cities',20,100); //[London,Paris]

5. Kolejnym elementem są hash’e.

Są to tzw. mapowania między kluczami a wartościami. Za ich pomocą możemy tworzyć bardziej rozbudowane struktury danych.

Dostępne są m. innymi następujące funkcje:

hSet – dodanie pary (klucz,watość ) do danego klucza

hGet – pobranie pary (klucz,wartość) danego klucza

hGetAll – pobranie wszystkich par danego klucza

hDel – usunięcie klucza z obiektu

Utwórzmy więc obiekt definiujący osobę.

$obj->hSet('person','firstname','Jan'); 
$obj->hSet('person','surname','Kowalski'); 
$obj->hSet('person','email','');

Aby pobrać konkretną własność możemy to zrobić w następujący sposób

$obj->hGet('person','surname');

lub wszystkie własności:

$obj->hGetAll('person');

Jeśli chcemy dodać od razu kilka własności możemy wykorzystać funkcję:

$obj->hMSet('person', [
    'firstname' => 'Adam',
    'surname' => 'Adamowski',
    'email' => '',
]);

To tylko kilka prostych przykładów które obrazują możliwości  Redisa. Zachęcamy do realizacji bardziej zaawansowanych problemów przy użyciu tej technologi jak również do szczegółowego zapoznania się z nią.

Na pewno jest ona ciekawą technologią alternatywną do standardowych relacyjnych baz danych, memcache , mongoDB itp.

Zainteresował Cię ten artykuł?

Oferujemy profesjonalne wsparcie programistów w technologii Web.
Może Cię również zainteresować:
5 rzeczy, na które warto zwrócić uwagę, wybierając dedykowany system klasy ERP, WMS lub LMS

Tworzenie dedykowanych aplikacji web’owych (dostępnych przez przeglądarkę WWW z poziomu komputera, tabletu czy telefonu) jest… Read More

Clutch Recognizes GOGOmedia as a 2022 Development Leader in Poland

GOGOmedia is a multidisciplinary team with vast experience in the digital technology space. We deliver… Read More