Powrót do kategorii
Backend
tagi
bazy danych, db, optymalizacja, php, redis,

Redis 3 – wykorzystanie struktur danych

Avatar
GOGO.Developer, 20/04/2016
redis struktury danych

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','jan@kowalski.pl');

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' => 'adam@adamowski.pl',
]);

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.

Podobne artykuły

Wykorzystanie Redis 3 jako systemu cache’ującego w Zend Framework 2

Optymalizacja wydajności aplikacji opartych na Zend Framework 2 z wykorzystaniem Redis.

Audyt UX (użyteczności) – Dlaczego warto go wykonać?

Jedna z dróg do podniesienia sprzedaży na Twojej stronie WWW

Poznajmy się
Poznajmy się
Chcesz porozmawiać o start-upach, projektach lub programowaniu?

GOGOmedia Sp. z o.o.
ul. Klimczaka 1
02-797 Warszawa

+48 22 378 47 27
GOGOmedia
GOGOmedia
Internet Software House

Jesteśmy internetową firmą technologiczną, dostarczamy kompletne rozwiązania informatyczne z zakresu web aplikacji. Kompleksowo obsługujemy klientów z różnych sektorów biznesu w zakresie dedykowanego oprogramowania. Prowadzimy szkolenia, doradzamy, wykonujemy specjalistyczne audyty i dzielimy się zdobytą przez lata wiedzą. Dla wielu jesteśmy partnerem, który pomaga osiągać wyznaczone cele biznesowe w najbardziej optymalny sposób.

Polecamy
Polecamy
narzędzia wspierające naszą codzienną pracę
  • New Relic
  • CloudFlare
  • JIRA
  • Bamboo
  • Axure
  • Zendesk
  • Microsoft Project