Memcached è un archivio di tipo chiave-valore per memorizzare nella cache blocchi di dati arbitrari come stringhe, oggetti, che siano i risultati di chiamate al database, chiamate API o rendering di pagine.
In questo articolo vedremo come installare Memcached su un sistema Ubuntu in cui sia già installato PHP, Apache oppure Nginx, in questo esempio userò Apache, in particolare tutte le operazioni verranno eseguite tramite l'utente root oppure tramite un'utenza privilegiata.
Il procedimento consiste in due passaggi
- Installare l'estensione php memcached;
- Installare il server Memcached.
Prima di installare l'estensione memcached verifichiamo la versione di php attualmente installata sul nostro sistema Ubuntu, poichè necessita di una versione 7.0 e successive, per fare ciò lanciamo da CLI il comando php -v
$ php -v
PHP 7.4.3 (cli) (built: Jul 5 2021 15:13:35) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies
nel mio caso ho la versione 7.4.3.
L'installazione di php memcached si effettua da CLI usando il comando
$ apt-get install php-memcached
se l'installazione è andata a buon fine riavviamo Apache con il seguente comando
$ systemctl restart apache2
per verificare la corretta installazione di memcached creiamo un file phpinfo.php nella root del nostro progetto, nel mio caso è /var/www/html, direttamente da CLI col seguente comando
$ vim /var/www/html/phpinfo.php
vim è l'editor installato sul sistema Ubuntu
phpinfo.php
<?php
phpinfo();
apriamolo dal browser e verifichiamo che sia presente la sezione
Installiamo ora il server Memcached da CLI
$ apt-get install memcached
se l'installazione è andata a buon fine riavviamo il server Memcached
$ systemctl restart memcached
e poi Apache
$ systemctl restart apache2
A questo punto possiamo usare memcached, creiamo un file index.php in /var/www/html da CLI
$ vim /var/www/html/index.php
index.php
<?php
try
{
$mem = new Memcached();
$mem->addServer("127.0.0.1", 11211);
$result = $mem->get("foo");
if ($result)
{
echo $result;
}
else
{
echo "Cache vuota";
$mem->set("foo", "Value key foo");
}
}
catch(\Exception $e)
{
echo $e->getMessage();
}
apriamo il file nel browser, vedremo il messaggio "Cache vuota", se aggiorniamo la pagina invece vedremo il messaggio "Value key foo" cioè il valore memorizzato nella cache.