Hosting Equipo Avantys 8 min

Caché en VPS: Redis, Memcached y OPcache Explicados

Guía completa de sistemas de caché para VPS. Redis vs Memcached, OPcache para PHP, configuración y cuándo usar cada uno.

// Compartir

Caché en VPS: Redis, Memcached y OPcache Explicados

La caché es el secreto de los sitios web rápidos. En lugar de procesar la misma petición mil veces, la guardas en memoria y la sirves instantáneamente.

Un VPS sin caché bien configurada está desperdiciando recursos. Con caché, el mismo servidor puede manejar 10x más tráfico.

Esta guía te explica los tres sistemas de caché más importantes y cómo configurarlos.

Por qué la caché es esencial

Sin caché

  1. Usuario pide página
  2. PHP procesa el código
  3. MySQL ejecuta queries
  4. PHP genera HTML
  5. Nginx envía respuesta
  6. Tiempo: 500ms - 2s

Con caché

  1. Usuario pide página
  2. Caché tiene la respuesta guardada
  3. Nginx envía respuesta
  4. Tiempo: 10-50ms

La diferencia es brutal. Y se multiplica con cada usuario concurrente.

Tipos de caché en un VPS

TipoQué cacheaHerramienta
OPcacheCódigo PHP compiladoOPcache (integrado)
Object cacheDatos de BD, objetosRedis, Memcached
Page cachePáginas HTML completasNginx, Varnish, plugins
CDNAssets estáticosCloudflare, BunnyCDN

Las capas de caché

Capas de caché en un VPS

La caché funciona mejor en capas. Cada capa intercepta peticiones antes de que lleguen más abajo:

  1. CDN - Archivos estáticos (JS, CSS, imágenes)
  2. Page cache - Páginas HTML completas
  3. Object cache - Resultados de queries, objetos
  4. OPcache - Bytecode PHP compilado
  5. Query cache - Queries SQL (deprecated en MySQL 8)

Cuanto más arriba interceptes, más rápido respondes.

OPcache: obligatorio para PHP

OPcache guarda el código PHP compilado en memoria. Sin OPcache, PHP recompila cada archivo en cada petición. Con OPcache, lo hace una vez.

Verificar si está activo

php -m | grep OPcache

Activar OPcache

En /etc/php/8.3/fpm/conf.d/10-opcache.ini:

opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=0
opcache.fast_shutdown=1
opcache.save_comments=1

Configuración explicada

ParámetroValorExplicación
memory_consumption256MB de RAM para scripts
max_accelerated_files10000Máximo de archivos en caché
revalidate_freq0Verificar cambios cada X segundos (0 = siempre)
interned_strings_buffer16MB para strings internos

Para producción

En producción, puedes aumentar revalidate_freq a 60 o más. Los archivos no cambian constantemente.

opcache.revalidate_freq=60
opcache.validate_timestamps=0  # Solo en producción estable

Verificar uso

php -r "print_r(opcache_get_status());"

O instala un panel como opcache-gui.

Redis: el estándar moderno

Redis es una base de datos en memoria que funciona como caché. Es rápida, versátil y el estándar actual.

Instalar Redis

sudo apt update
sudo apt install redis-server -y
sudo systemctl enable redis-server
sudo systemctl start redis-server

Verificar instalación

redis-cli ping
# Respuesta: PONG

Configuración básica

Edita /etc/redis/redis.conf:

# Memoria máxima
maxmemory 512mb

# Política cuando se llena (elimina menos usados)
maxmemory-policy allkeys-lru

# Solo conexiones locales
bind 127.0.0.1

# Persistencia (opcional, para caché pura desactívalo)
save ""

Reinicia:

sudo systemctl restart redis-server

Usar Redis como object cache

Para WordPress:

  1. Instala plugin “Redis Object Cache”
  2. Añade a wp-config.php:
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);
  1. Activa en el plugin

Para Laravel:

En .env:

CACHE_DRIVER=redis
SESSION_DRIVER=redis

Para cualquier PHP:

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// Guardar
$redis->set('clave', 'valor', 3600); // TTL 1 hora

// Recuperar
$valor = $redis->get('clave');

Comandos útiles de Redis

# Ver claves
redis-cli KEYS "*"

# Ver memoria usada
redis-cli INFO memory

# Limpiar toda la caché
redis-cli FLUSHALL

# Ver estadísticas
redis-cli INFO stats

Memcached: simple y ligero

Memcached es más simple que Redis. Solo almacena pares clave-valor en memoria. Sin persistencia, sin estructuras de datos complejas.

Instalar Memcached

sudo apt install memcached libmemcached-tools -y
sudo systemctl enable memcached
sudo systemctl start memcached

Configuración

Edita /etc/memcached.conf:

# Memoria máxima en MB
-m 512

# Puerto
-p 11211

# Solo local
-l 127.0.0.1

# Conexiones máximas
-c 2048

PHP con Memcached

Instala la extensión:

sudo apt install php8.3-memcached -y
sudo systemctl restart php8.3-fpm

Uso:

$memcached = new Memcached();
$memcached->addServer('127.0.0.1', 11211);

// Guardar
$memcached->set('clave', 'valor', 3600);

// Recuperar
$valor = $memcached->get('clave');

Redis vs Memcached

Redis vs Memcached - Comparativa

Comparativa directa

CaracterísticaRedisMemcached
Estructuras de datosStrings, listas, sets, hashes, streamsSolo strings
PersistenciaSí (opcional)No
ReplicaciónNo nativo
Pub/SubNo
MemoriaMás eficienteMenos eficiente
MultithreadingSingle-threadMulti-thread
ComplejidadMayorMenor

Cuándo usar cada uno

Usa Redis si:

  • Necesitas persistencia de datos
  • Quieres estructuras de datos (listas, sets)
  • Usas WordPress, Laravel o frameworks modernos
  • Necesitas colas de trabajo
  • Quieres una sola herramienta para todo

Usa Memcached si:

  • Solo necesitas caché simple key-value
  • Tienes un caso de uso muy específico
  • Ya lo usas y funciona bien

Nuestra recomendación: Redis en el 95% de casos. Es más versátil y la diferencia de recursos es mínima.

Page cache con Nginx

Para páginas que no cambian frecuentemente, cachear el HTML completo es lo más efectivo.

FastCGI Cache para PHP

Añade a tu configuración de Nginx:

# Fuera del bloque server
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

server {
    # ... tu configuración ...

    set $skip_cache 0;

    # No cachear admin, login, etc.
    if ($request_uri ~* "/wp-admin/|/wp-login.php") {
        set $skip_cache 1;
    }

    # No cachear si hay cookies de login
    if ($http_cookie ~* "wordpress_logged_in") {
        set $skip_cache 1;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
        
        fastcgi_cache WORDPRESS;
        fastcgi_cache_valid 200 60m;
        fastcgi_cache_bypass $skip_cache;
        fastcgi_no_cache $skip_cache;
        
        add_header X-Cache-Status $upstream_cache_status;
    }
}

Verificar que funciona

curl -I https://tudominio.com/
# Busca: X-Cache-Status: HIT

Varnish: caché HTTP profesional

Varnish es un acelerador HTTP que se pone delante de tu servidor web. Para sitios con mucho tráfico.

Instalar Varnish

sudo apt install varnish -y

Configuración básica

Varnish escucha en el puerto 80, Nginx en el 8080:

  1. Cambia Nginx a puerto 8080
  2. Configura Varnish para pasar tráfico a Nginx

/etc/varnish/default.vcl:

vcl 4.0;

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

sub vcl_recv {
    # No cachear admin
    if (req.url ~ "^/wp-admin" || req.url ~ "^/wp-login") {
        return (pass);
    }
}

sub vcl_backend_response {
    # Cachear 1 hora
    set beresp.ttl = 1h;
}

Varnish es potente pero complejo. Solo recomendado si FastCGI cache no es suficiente.

Caché para WordPress específico

WordPress tiene plugins que simplifican todo:

LiteSpeed Cache (si usas LiteSpeed)

El mejor plugin de caché para WordPress. Gratuito, potente, integrado con servidor LiteSpeed.

Los VPS de Avantys con LiteSpeed incluyen esta ventaja.

WP Super Cache / W3 Total Cache

Para servidores Nginx/Apache. Generan archivos HTML estáticos.

Redis Object Cache

Conecta WordPress con Redis para object cache. Complementa a los plugins de page cache.

Configuración recomendada WordPress

  1. OPcache: Siempre activo
  2. Redis: Object cache con plugin
  3. Page cache: LiteSpeed Cache o WP Super Cache
  4. CDN: Cloudflare (gratis)

Con esto, un WordPress típico pasa de 2s a 200ms de carga.

Cuánta memoria asignar

La memoria de caché compite con PHP, MySQL y el sistema. Distribuye con cabeza:

VPS 4GB RAM

ComponenteRAM
Sistema500MB
MySQL buffer1GB
PHP-FPM1GB
Redis512MB
OPcache256MB
Libre~700MB

VPS 8GB RAM

ComponenteRAM
Sistema500MB
MySQL buffer2GB
PHP-FPM2GB
Redis1GB
OPcache512MB
Libre~2GB

Monitorizar la caché

Redis

# Estadísticas
redis-cli INFO stats

# Tasa de aciertos
redis-cli INFO stats | grep hit

Busca keyspace_hits vs keyspace_misses. Un ratio alto de hits es bueno.

OPcache

<?php
print_r(opcache_get_status());

Busca opcache_hit_rate. Debería ser >95%.

Nginx FastCGI

Revisa el header X-Cache-Status:

  • HIT: Servido desde caché
  • MISS: Generado y cacheado
  • BYPASS: No cacheado (admin, login)

Errores comunes

Error 1: Caché de sesiones sin Redis

Las sesiones PHP por defecto van a disco. Con Redis van a memoria:

; php.ini
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

Error 2: No invalidar caché

Si cambias contenido y la caché no se actualiza, tus usuarios ven contenido antiguo. Configura TTLs apropiados y mecanismos de purga.

Error 3: Demasiada memoria a caché

Si Redis usa 2GB en un VPS de 4GB, no queda memoria para PHP y MySQL. La caché debe complementar, no dominar.

Error 4: Cachear contenido dinámico

No cachees páginas de carrito, checkout, áreas de usuario. Cada usuario vería los datos de otro.

Preguntas frecuentes

¿Redis consume mucha CPU?

No, es muy eficiente. Consume más memoria que CPU.

¿Puedo usar Redis y Memcached juntos?

Técnicamente sí, pero no tiene sentido. Elige uno.

¿La caché puede causar problemas?

Sí, si no invalidas correctamente. Contenido desactualizado, datos de otros usuarios… Configura bien los TTLs.

¿OPcache es suficiente?

Para sitios pequeños sí. Para tráfico medio-alto, añade Redis y page cache.

Nuestra recomendación

Mínimo obligatorio:

  • OPcache activado (mejora inmediata del 50%+)

Para la mayoría de sitios:

  • OPcache + Redis + page cache

Para alto tráfico:

  • Todo lo anterior + CDN + Varnish si es necesario

Con la caché bien configurada, tu VPS rinde como uno de doble precio.

¿Quieres un VPS con caché optimizada? Explora los VPS de Avantys con LiteSpeed y configuración profesional.


Conclusión

La caché es la optimización de mayor impacto que puedes hacer en tu VPS. OPcache es obligatorio, Redis es el estándar para object cache, y page cache multiplica la capacidad de tu servidor.

Empieza por OPcache (gratuito, integrado). Añade Redis cuando necesites más. Implementa page cache para el salto definitivo.

Tu servidor te lo agradecerá. Tus usuarios también.


Guías relacionadas


¿Quieres la guía completa con todos los casos de uso?

→ Volver a la guía maestra: Mejor VPS en España 2026

¿Quieres que lo hagamos por ti?

En Avantys gestionamos tu web, hosting y crecimiento digital de punta a punta. Tú a lo importante.

Hablar con Avantys
// Boletín

Suscríbete al boletín

Guías nuevas, sin spam. Cancela cuando quieras.