Memcached este un mecanism de stocare a informatiei sub forma unei perechi (cheie:valoare) in memoria RAM, reducand prin aceasta accesul la disk sau executarea unor interogari asupra unei baze de date. Memcached este distribuit gratuit si poate rula pe diverse sisteme de operare cum sunt Linux, Windows sau Mac OS.
Instalarea si configurarea memcached sunt destul de simple. Pentru utilizare, intr-un scenariu obisnuit (server Linux, Apache, MySQL, Php) sunt necesare 2 pachete software:
- memcached (serviciul memcached)
- php-pecl-memcache (extensia php care faciliteaza comunicarea cu serviciul memcached).
Instalare
# yum install memcached php-pecl-memcache
Configurare
In cazul unui server CentOS fisierul de configurare se afla la locatia /etc/sysconfig/memcached
PORT="11211" USER="memcached" MAXCONN="1024" CACHESIZE="512" OPTIONS="-l 127.0.0.1"
Pornire serviciu
Pentru pornirea automata a serviciului la incarcarea sistemului de operare:
# chkconfig memcached on # service memcached start
Daca se doreste pornirea serviciul ca si daemon, acest lucru se realizeaza folosind comanda:
# memcached -d -m 512 -u memcached -l 127.0.0.1
Vizualizare elemente memorate
# memcached-tool 127.0.0.1:11211 # Item_Size Max_age Pages Count Full? Evicted Evict_Time OOM 1 96B 4426s 1 2 no 0 0 0 21 8.7K 3675s 1 2 no 0 0 0 29 51.7K 3963s 1 1 no 0 0 0 33 126.3K 3893s 1 1 no 0 0 0
Vizualizare statistici
# memcached-tool 127.0.0.1:11211 stats
#127.0.0.1:11211 Field Value
accepting_conns 1
auth_cmds 0
auth_errors 0
bytes 8601
bytes_read 8560
bytes_written 2810
cas_badval 0
cas_hits 0
cas_misses 0
cmd_flush 0
cmd_get 4
cmd_set 3
conn_yields 0
connection_structures 14
curr_connections 12
curr_items 3
decr_hits 0
decr_misses 0
delete_hits 0
delete_misses 0
evictions 0
get_hits 2
get_misses 2
incr_hits 0
incr_misses 0
limit_maxbytes 134217728
listen_disabled_num 0
pid 13095
pointer_size 64
rusage_system 0.056991
rusage_user 0.023996
threads 4
time 1440147170
total_connections 890
total_items 3
uptime 2273
version 1.4.4
Utilizare:
$memcache = new Memcached();
$memcache_available = $memcache->connect('127.0.0.1', 11211);
$query = "SELECT * FROM visitors WHERE first_name='Lorand' AND last_name = 'Szekely';";
$mc_key = md5($query);
$mc_result = $memcache->get($mc_key);
if ($mc_result) {
$first_name = $mc_result['first_name'];
$last_name = $mc_result['last_name'];
}
else {
//Ruleaza interogarea in baza de date
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$memcache->set($mc_key, $row, false, 60*60); //stocheaza rezultatul pentru o ora (3600 sec)
}
Pentru a verifica daca clasa Memcache este instalata in PHP, inainte de a crea obiectul $memcache, se poate folosi secventa:
if(class_exists('Memcache')){
// Memcache is enabled.
}
Leave a Reply