Pridaj hodnotenie:

Redis pomocou PECL (PHPRedis)

Pre túto možnosť využívania služby redis je potrebné, aby bolo na serveri v php povolené rozšírenie redis.so. Na našich serveroch je toto povolenie pernamentne zapnuté. Ak teda máte web na našom webhostingu nemusíte nič riešiť. Inde si redis.so musíte zapnúť.

Ako zistiť či mám povolené rozšírenie redis.so?

Viete to zistiť jednoducho tak, že si vytvoríte súbor s funkciou phpinfo() a spustíte ho. Ak máte povolené toto rozšírenie, nájdete celú sekciu s redisom.

phpinfo.php

<?php
phpinfo();
?>
Php info

Pracovanie s redis cache v php

Prvá vec čo potrebujeme nastaviť je pripojenie k redis serveru, v našom prípade k redis socketu. Na to použijeme funkciu connect(). Táto funkcia vyžaduje dva parametre.

  • Prvý parameter je IP adresa redis servera, alebo redis socket.
  • Druhý parameter je port servera. V našom prípade sa pri socketoch nepoužíva port, takže nastavíme nulu.
$redis = new Redis();
$redis->connect('/dev/shm/sock-redis-p2000', 0);

 

Defaultne zapisuje údaje do databázy číslo 0. Ak si chcete zmeniť databázu na zapisovanie, môžete tak spraviť funkciou select().

Štandardne máte k dispozícií 16 databáz (od 0 po 15).

$redis->select(1);

 

Pre demonštráciu budeme používať premennú number ktorá sa bude zväčšovať s každým načítaním stránky.

Najskôr si ju teda na stránke vypíšeme, aby sme vedeli jej aktuálnu hodnotu. Prvý krát samozrejme nebude premenná vytvorená, takže nastavíme aby sa nám vypísala nula.

$hodnota = $redis->get('number') ?: 0;

 

Premenná hodnota teda obsahuje aktuálne číslo ktoré je zapísané v redise. Vypíšeme si ju na stránku.

echo "Aktuálna hodnota: " . $hodnota;

 

Posledné čo nám chýba je zapísanie novej hodnoty do redis databázy. To spravíme funkciou set()s dvoma parametrami.

  • Prvý je názov premennej,
  • druhý je hodnota, ktorá sa má zapísať.

Spravíme to tak, že pripočítame k aktuálnej hodnote 1 a tak ju zapíšeme. Tiež pre testovacie účely nastavíme exspiračný čas na 60 sekúnd. Na to slúži funkcia expire().

$redis->set('number', $hodnota + 1);
$redis->expire('number', 360);

 

Celý script teda bude vyzerať takto:

<?php

$redis = new Redis();
$redis->connect('/dev/shm/sock-redis-p2000', 0);
$redis->select(1);

$hodnota = $redis->get('number') ?: 0;

echo "Aktuálna hodnota: " . $hodnota;

$redis->set('number', $hodnota + 1);
$redis->expire("number", 360);