Pridaj hodnotenie:

Redis pomocou PREDIS (Composer)

Pridanie knižnice predis

Pre tento návod je potrebné, aby ste už mali nainštalovaný composer a vytvorený composer projekt. Následne do projektu pridáme knižnicu predis/predis.

composer require predis/predis 

Práca s redis cache

Pripojenie pomocou predis knižnice funguje trochu inak ako pomocou PHPRedis. V prvom rade treba načítať composer súbor autoload.php.

require 'vendor/autoload.php';

Následne povolíme knižnicu predis v súbore.

Predis\Autoloader::register();

A až potom sa môžeme pripojiť k redis serveru, v našom prípade k redis socketu. Na to použijeme funkciu Client(). Táto funkcia vyžaduje jeden parameter.

  • Adresa na pripojenie k redisu. V našom prípade používame socket, preto ho definujeme slovom unix. Ak by sme používali IP adresu, nebolo by tam unix, ale tcp alebo tls.
$redis = new Predis\Client('unix:/dev/shm/sock-redis-p2000');

 

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

require 'vendor/autoload.php';

Predis\Autoloader::register();

$redis = new Predis\Client('unix:/dev/shm/sock-redis-p2000');
$redis->select(1);

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

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

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