Caché en PHP: Redis, Memcached y soluciones integradas: de la A a la Z

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: Por qué el caché es la base de una aplicación PHP rápida



Cada desarrollador de PHP, tarde o temprano, se enfrenta al problema del rendimiento. Cuando la base de datos comienza a ralentizarse y las páginas tardan de 3 a 5 segundos en cargar, lo primero que viene a la mente es el caché. No se trata solo de "guardar datos en algún lugar", es toda una filosofía de optimización.



En este artículo, analizaremos todos los enfoques populares para el almacenamiento en caché en PHP: desde el simple caché de archivos hasta soluciones industriales como Redis y Memcached. Aprenderá a elegir la herramienta adecuada y evitar errores típicos. ¡Vamos allá!



1. Mecanismos de caché integrados en PHP



1.1. Caché de código de operación: OPcache



Antes de hablar de almacenamientos externos, vale la pena recordar que el propio PHP puede almacenar en caché su código. El mecanismo OPcache guarda los scripts compilados en la memoria RAM, evitando que PHP tenga que analizar y compilar los archivos cada vez.



Habilitación de OPcache en php.ini:



opcache.enable=1opcache.memory_consumption=128opcache.max_accelerated_files=10000opcache.revalidate_freq=2


Esta es la primera línea de defensa. Sin OPcache, cualquier otro tipo de caché será menos eficiente.



1.2. APCu: caché de usuario en memoria



APCu (Alternative PHP Cache) es una extensión para almacenar datos arbitrarios en la memoria compartida del proceso PHP. Es ideal para proyectos pequeños donde no se requiere un caché distribuido.



Ejemplo de trabajo con APCu:



<?php// Guardamos datos por 5 minutosapcu_store('mi_clave', ['datos' => 'valor'], 300);

// Leemos los datos$datos = apcu_fetch('mi_clave');if ($datos === false) { echo "Caché no encontrado, generando de nuevo";}

// Eliminamos la claveapcu_delete('mi_clave');?>


Ventajas: velocidad ultrarrápida, simplicidad. Desventajas: los datos solo viven dentro de un único servidor.



2. Memcached: simplicidad y velocidad



2.1. ¿Qué es Memcached y para qué sirve?



Memcached es un sistema de caché distribuido en memoria RAM. Fue creado para acelerar aplicaciones web dinámicas reduciendo la carga en las bases de datos. A diferencia de APCu, Memcached funciona como un servidor independiente al que se pueden conectar diferentes instancias de PHP.



2.2. Instalación y conexión de Memcached



Primero, instale el servidor Memcached:



sudo apt install memcachedsudo systemctl start memcached


Luego, instale la extensión de PHP:



sudo pecl install memcached


Ahora puede trabajar con el caché:



<?php$memcached = new Memcached();$memcached->addServer('localhost', 11211);

// Guardamos por 10 minutos$memcached->set('usuario_123', ['nombre' => 'Iván', 'email' => 'ivan@example.com'], 600);

// Leemos$usuario = $memcached->get('usuario_123');if ($usuario === false) { // Cargamos desde la BD}?>


2.3. Cuándo elegir Memcached



  • Cuando se necesita un almacenamiento simple de clave-valor
  • Cuando los datos tienen una vida útil corta (sesiones, datos temporales)
  • Cuando no se requiere persistencia (Memcached no guarda datos en disco)


3. Redis: una herramienta potente para escenarios complejos



3.1. ¿Por qué Redis es mejor que Memcached?



Redis no es solo un caché, es una base de datos en memoria completa con soporte para estructuras de datos complejas: listas, conjuntos, hashes, mapas de bits. A diferencia de Memcached, Redis admite:



  • Persistencia — los datos no se pierden al reiniciar
  • Transacciones y scripts Lua
  • Pub/Sub para el intercambio de mensajes
  • Replicación y agrupación en clústeres


3.2. Ejemplos de trabajo con Redis en PHP



Para trabajar con Redis, se utiliza

Blogs

Book Recommendations