Őszintén szólva eddig féltem a témától, mint a tűztől. Plusz egy különálló process, kitudja mennyire stabil, ha leáll gáz van és stb. Aztán most, hogy az egyik projektben a munkaadóm már hetek óta hajtogatta, hogy szükség lesz rá, mert gyorsabb, mint a HDD-s cache úgy döntöttem, hogy szabad óráimban felteszek egy linuxot vm-be és próbálkozok.
Felvetődhet a kérdés, hogy miért is jó ez. Egyszerűen szólva a Memcache nagy előnye, hogy közvetlenül a memóriában tárolja az adatokat, ami a lehető leggyorsabb módszer az adatok elérésére – írására és olvasására.
Tehát az alábbi néhány egyszerű lépéssel végeztem el a telepítést:
apt-get install memcached
Telepítés után megnyitjuk a konfigurációt és megnöveljük a használható megabájtokat. 128 helyett lehet több és kevesebb is, én például 256-ot állítottam be:
nano /etc/memcached.conf
-m 64 sort írjuk át erre: -m 128
Aztán memcache újraindítás:
service memcached restart
php5-be „beépítjük” a memcache-t:
apt-get install php5-memcached
Apacs’ restart és készen is vagyunk:
service apache2 restart
Aztán egy php fileba toljuk be ezt:
<?php
$mc = new Memcached();
$mc->addServer(„127.0.0.1”, 11211);
$mc->set(„testkey”, „Mindenki örül, működik a memcache! :)”);
print $mc->get(„testkey”);
Ha futtatás után azt látjuk a képernyőn, hogy „Mindenki örül, működik a memcache! :)” akkor már végeztünk is.
A mellékelt kódsorok alapján láthatjuk, hogy OOP szintű a dolog, set-get a beírás és kiolvasás. Kulcs-értékpárokkal dolgozunk, tehát a key az lényegében a kulcs, azonosító – a set második paramétere (value) pedig maga a felvitt adat.
Fontos még megjegyeznem, hogy vannak esetek amikor szeretnénk, hogy egy felvitt adat egy idő után lejárjon. Először ezt manuálisan akartam megoldani, így hosszasan keresgéltem modify/set date után unix időben, de aztán rájöttem, hogy a megoldás sokkal egyszerűbb: a set metódus harmadik paramétere egy integer, ami default 0 – ez állítja be az adat timeout-ját. Tehát ha beállítunk egy >0 értéket akkor a rögzített adat annyi ideig lesz érvényes, utána automatikusan megsemmisül. Így a szemétgyűjtést nem valós időben kell végeznünk, mint a file szintű cache-nél, kódunk ezért is gyorsabb lesz (hurrá!).
Memcache admin/stat felület
Jó kis statisztikás app készült hozzá, amit elég kicsomagolnunk és bemásolnunk valahova, majd böngészőben a szerverről megnyitni. Letölthető innen!