Categories
PHP

Instalare si configurare memcached si memcache

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

Your email address will not be published. Required fields are marked *