Redis
Abban az esetben, ha szükségünk van cache-elésre, mert sok statikus adattal dolgozunk és nagy mennyiségű felhasználó szeretné a szoftverünket használni, akkor használhatunk redis-t. A redis egy szerver oldali alkalmazás, ami a memórában tárolja az adatokat key-value párokban. |
|
Redis telepítése:
# apt-get update # apt-get install redis-server # service redis-server status Ellenőrizzük, hogy fut-e: # ps aux | grep redis Consolos felület: # redis-cli Monitorozhatjuk a lefutott parancsokat: > monitor Kulcs létrehozás: > set x "teszt" Kulcs lekérdezése: > get x Kulcs törlése: > del x Kulcs ellenőrzése, hogy létezik-e: > keys *valami Adatbázis választás: > select 3 Törli a kulcsokat az akutális db-ből: > flushdb Összes kulcsot törli > flushall Symfony-ban egy gyors példa következik. Composer csomag: # composer require predis/predis Állítsuk be a configot, config/packages/cache.yaml: framework: cache: # Redis app: cache.adapter.redis default_redis_provider: 'redis://%env(REDIS_HOST)%/%env(REDIS_DB)%' .env: ###> REDIS ### REDIS_ENABLED=true REDIS_HOST='localhost:6379' REDIS_DB="0" ###< REDIS ### Készítünk egy redis service-t: <?php namespace App\Service; use Predis; class RedisService { private $redis; public function __construct() { $sentinels = [$_ENV['REDIS_HOST']]; $options = [ 'service' => 'mymaster', 'parameters' => [ 'database' => $_ENV['REDIS_DB'] ] ]; $this->redis = new Predis\Client($sentinels, $options); } public function getData(string $cacheKey): string { return $this->redis->get($cacheKey) ?? ''; } public function setData(string $cacheKey, array $data, int $ttl = 60, string $expireResolution = 'ex'): bool { $result = $this->redis->set($cacheKey, serialize($data), $expireResolution, $ttl); return (boolean)($result->getPayload() == "OK"); } public function incr(string $command): string { return $this->redis->incr($command); } } Példa használatra: $predis = new RedisService(); // datok lekérdezése $predis->getData($key); // elmentünk adatokat, amit 60 másodpercig fog tárolni $predis->setData($key, $redisData, 60); // ha közvetlenül szeretnénk parancsot kiadni $predis->incr('get test.data'); Ha kell a linux szerveren állítsunk az /etc/redis/redis.conf-ban bind-et, hogy kívülről elérjük. Olvasnivaló: https://packagist.org/packages/predis/predis https://hackerbox.io/articles/symfony-4-redis-cache/ http://www.inanzzz.com/index.php/post/3th5/install-and-use-redis-in-symfony-applications https://redislabs.com/blog/get-sql-like-experience-redis/ |
2021.04.17. |
Figyelem! Az itt olvasható leírások, nem teljesek és nem biztos, hogy pontosak. Nem
frissülnek folyamatosan, ezért nem mindegyik használható az aktuális verziójú rendszerekben. Mindenki saját
felelősségére használja az itt található ötleteket. Az esetleges károkért nem vállalunk felelősséget.