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