Cómo instalar y configurar Memcached en Debian

Bases de datosLinuxPHPPython

Memcached es un sistema de caché que se suele utilizar para optimizar el rendimiento de las aplicaciones, almacenando información en memoria. Esto resulta útil cuando por ejemplo se quiere acelerar el tiempo de respuesta de las consultas SQL, ya que se puede almacenar el resultado en memoria, de forma que esté disponible para futuras peticiones.

En este tutorial aprenderás a instalar y configurar un servidor de Memcached en Debian.

Instalación de Memcached

Para instalar Memcached en Debian debes seguir los pasos que ves a continuación:

  1. Podrás instalar Memcached desde los repositorios oficiales de Debian. Primero debes asegurarte de que el índice está al día mediante la ejecución de este comando:
    sudo apt update
  2. A continuación debes instalar el paquete oficial de Memcached ejecutando el siguiente comando:
    sudo apt install memcached
  3. Finalmente, inicia el servidor de Memcached usando este comando:
    sudo systemctl start memcached

    Dependiendo de tu sistema operativo, quizás también puedas iniciarlo ejecutando este comando:

    service memcached start
  4. Una vez instalado Memcached, puedes comprobar su estado mediante este comando:
    sudo systemctl status memcached

También podrías querer instalar la librería libmemcached-tools, que se usa para examinar y gestionar el servidor de Memcached, aunque es opcional:

sudo apt install libmemcached-tools

Configuración de Memcached

La configuración principal de Memcached se encuentra en el archivo /etc/memcached.conf. Puedes editar este archivo con tu editor de texto favorito, como por ejemplo nano:

sudo nano /etc/memcached.conf

Algunas opciones que podrás configurar son el puerto en el que escucha Memcached, el tamaño máximo de la memoria o la dirección IP en la que escucha, entre otras opciones. Asegúrate de guardar los cambios después de realizar las modificaciones.

Memcached tiene asignada por defecto muy poca memoria. Si por ejemplo quisieras asignar 515MB, tendrías que modificar la opción -m:

-m 512

Memcached viene configurado para escuchar solamente la IP local 127.0.0.1. Si quisieses que escuchase todas las IPs, tendrías que modificar la opción -l:

-l 0.0.0.0

El puerto que Memcached usa por defecto es el 11211. Puedes modificarlo mediante la opción -p:

-p 11212

Cómo reiniciar Memcached

Para reiniciar Memchached, puedes usar el siguiente comando de systemctl:

sudo systemctl restart memcached

También puedes reiniciarlo con este comando, dependiendo de tu versión de Debian:

service memcached restart

Configuración del Firewall

Si usas un Firewall como por ejemplo ufw, podrás proteger Memcached para que solo acepte conexiones desde determinadas IPs mediante este comando, reemplezando IP y PUERTO por los valores que necesites:

sudo ufw allow from IP to any port PUERTO

En el siguiente ejemplo configuramos ufw para que escuche la IP 192.168.1.1 en el puerto 11211:

sudo ufw allow from 192.168.1.1 to any port 11211

Configuración IPv6  de Memcached

Para configurar Memcached para trabajar con IPv6 en Debian, puedes seguir estos pasos:

  1. Edita el archivo de configuración de Memcached:
    sudo nano /etc/memcached.conf
  2. En el archivo de configuración de Memcached, debes configurar Memcached para que escuche en la dirección IPv6 adecuada. Puedes hacerlo configurando el parámetro -l con la dirección IPv6 que desees utilizar. Por ejemplo, si deseas que Memcached escuche en todas las interfaces IPv6 disponibles, puedes configurar -l con la dirección ::0, lo que significa que escuchará en todas las interfaces IPv6:
    l ::0

    Si quieres que Memcached escuche en una dirección IPv6 específica, puedes especificarla directamente:

    -l <dirección_ipv6>
  3. Después de realizar los cambios necesarios, guarda el archivo de configuración y reinicia Memcached mediante este comando:
    sudo systemctl restart memcached

Con esto ya habrás configurado Memcached para que escuche una dirección IPv6.

Configuración de los clientes de Memcached

Memcached dispone de clientes para varios lenguajes de programación, como por ejemplo PHP, Ruby, Python o Java. Dependiendo del cliente que necesites, podrás configurar Memcached siguiendo estas guías:

Configuración de PHP con Memcached

Una vez instalado Memecached en tu sistema, necesitas instalar la extensión PHP para Memcached. Puedes hacerlo utilizando el gestor de paquetes apt y el paquete php-memcached. Para ello, debes ejecutar el siguiente comando en tu terminal:

sudo apt-get install php-memcached

Esto instalará la extensión PHP para Memcached en tu sistema.

Después de instalar la extensión PHP para Memcached, debes reiniciar tu servidor web para que los cambios surtan efecto.

  • Si usas Apache, puedes hacerlo ejecutando el siguiente comando:
    sudo systemctl restart apache2
  • Si usas Nginx, puedes hacerlo ejecutando el siguiente comando:
    sudo systemctl restart nginx

Esto reiniciará el servidor web, asegurando que la extensión de Memcached de PHP esté cargada correctamente.

Una vez que hayas reiniciado el servidor web, puedes verificar si la extensión de Memcached de PHP está instalada y en funcionamiento. Puedes crear un archivo PHP con el siguiente contenido y abrirlo en tu navegador:

<?php
phpinfo();
?

Aquí tienes un ejemplo básico de cómo usar Memcached en una aplicación PHP utilizando la extensión php-memcached:

<?php
// Crear una instancia de Memcached
$memcached = new Memcached();

// Añadir el servidor Memcached (por defecto escucha en localhost:11211)
$memcached->addServer('localhost', 11211);

// Almacenar un valor en Memcached
$memcached->set('clave', 'valor', 3600); // Tiempo de expiración en segundos (1 hora)

// Recuperar un valor de Memcached
$value = $memcached->get('clave');

// Verificar si el valor está en caché
if ($value) {
    echo "Valor recuperado de Memcached: $value";
} else {
    echo "Valor no encontrado en Memcached. Ejecutar lógica para obtener el valor y luego almacenarlo en Memcached.";
}
?>

Configuración de Ruby con Memcached

Para instalar y utilizar Memcached con Ruby, necesitas instalar la gema (gem) dalli, que es una gema de cliente de Memcached para Ruby. Luego debes asegurarte de que Memcached esté instalado y en funcionamiento en tu sistema.

Una vez esté Memcached instalado en Debian, usa el administrador de gemas de Ruby, gem, para instalar la gema dalli. Para ello, debes ejecutar el siguiente comando en tu terminal:

gem install dalli

Esto instalará la gema dalli, que es el cliente de Memcached para Ruby.

Ahora puedes utilizar dalli en tu aplicación Ruby para conectarte a Memcached y almacenar o recuperar datos en la memoria caché.

Aquí tienes un ejemplo básico de cómo usar dalli en una aplicación Ruby:

require 'dalli'

# Crea una nueva instancia de cliente Memcached
client = Dalli::Client.new('localhost:11211')

# Almacena un valor en Memcached
client.set('clave', 'valor')

# Recupera un valor de Memcached
value = client.get('clave')
puts value

Configuración de Python con Memcached

Para interactuar con Memcached desde Python, necesitas instalar una biblioteca que proporcione una interfaz para trabajar con Memcached. En este caso, puedes instalar python3-memcached. Para instalarla, debes ejecutar el siguiente comando en tu terminal:

sudo apt-get install python3-memcached

Esto instalará la biblioteca python3-memcached, que te permitirá interactuar con Memcached desde Python.

Ahora puedes utilizar la biblioteca python3-memcached en tu aplicación Python para conectarte a Memcached y almacena o recuperar datos en la memoria caché.

Aquí tienes un ejemplo básico de cómo usar python3-memcached en una aplicación Python:

import memcache

# Crea una nueva instancia del cliente Memcached
client = memcache.Client(['127.0.0.1:11211'])

# Almacena un valor en Memcached
client.set('clave', 'valor')

# Recupera un valor de Memcached
value = client.get('clave')
print(value)

Conclusión

En este tutorial hemos cubierto tanto la instalación de Memcached en Debian como su configuración desde diferentes lenguajes de programación.

Espero que te haya resultado útil.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

Deja una respuesta

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”