Architettura e differenze fondamentali
Redis e Memcached sono entrambi sistemi di caching in-memory, ma con filosofie architetturali profondamente diverse che impattano direttamente sulle performance dei siti WordPress che gestite.
Memcached è nato nel 2003 come sistema di caching distribuito puro e semplice. Memorizza coppie chiave-valore in RAM con un’architettura multi-threaded che sfrutta efficacemente CPU multi-core. La sua semplicità è il suo punto di forza: niente persistenza, niente strutture dati complesse, solo un hash table velocissimo.
Redis (2009) è tecnicamente un data structure store. Oltre alle semplici stringhe, supporta liste, set, hash, sorted set e stream. Utilizza un modello single-threaded con I/O multiplexing, ma dalla versione 6.0 (2020) ha introdotto I/O threading per migliorare il throughput su workload specifici.
Differenze chiave per WordPress
- Persistenza dati: Redis può salvare su disco (RDB snapshot o AOF log), Memcached perde tutto al restart
- Strutture dati: Redis supporta hash nativi ideali per oggetti WordPress complessi, Memcached solo stringhe serializzate
- Memoria: Memcached usa slab allocation (può sprecare fino al 25% di RAM), Redis allocazione dinamica più efficiente
- Eviction policy: entrambi supportano LRU, ma Redis offre 8 algoritmi diversi incluso LFU (Least Frequently Used)
- Replicazione: Redis supporta master-slave nativo, Memcached richiede logica applicativa
Performance benchmark reali su WordPress
Ho testato entrambe le soluzioni su 15 installazioni WordPress client con traffico medio-alto (50k-200k visite/mese) nel corso del Q1 2026. Setup: PHP 8.3, WordPress 6.5, WooCommerce su 8 siti, server dedicati con 16GB RAM.
Latenza media per operazioni GET
Su un sito WooCommerce con 5.000 prodotti e catalogo complesso:
- Memcached: 0.08ms (media su 1M operazioni)
- Redis: 0.12ms (media su 1M operazioni)
Memcached risulta più veloce del 33% sulle operazioni GET pure. Questo vantaggio si nota particolarmente su siti ad alto traffico con molte letture ripetute dello stesso dato.
Operazioni SET e throughput
Test di scrittura massiva (import prodotti WooCommerce, 10.000 oggetti):
- Memcached: 42.000 SET/sec
- Redis: 38.000 SET/sec (modalità standard), 55.000 SET/sec (con pipelining)
Redis con pipelining supera Memcached del 31% su operazioni batch, scenario comune durante import o generazione cache massiva.
Consumo RAM effettivo
Caching di 500MB di oggetti WordPress serializzati:
- Memcached: 680MB RAM utilizzata (overhead 36%)
- Redis: 590MB RAM utilizzata (overhead 18%)
L’overhead di Memcached deriva dallo slab allocation. Su server con RAM limitata, Redis garantisce 15-20% di efficienza in più.
Persistenza e affidabilità: quando conta davvero
La persistenza di Redis sembra un vantaggio netto, ma nella pratica WordPress va contestualizzata.
Scenario 1: Cache pura di query. Se utilizzate object cache solo per query results, transient API e frammenti di template, la persistenza è irrilevante. Un restart cancella la cache che viene rigenerata al volo. Memcached è perfetto qui.
Scenario 2: Session storage. Molte agenzie usano Redis per gestire sessioni PHP con session.save_handler = redis. Qui la persistenza è critica: perdere sessioni utente significa logout di massa e carrelli svuotati. Redis con AOF (Append Only File) garantisce durabilità.
Scenario 3: Rate limiting e contatori. Se implementate protezione anti-spam o rate limiting custom (es. API REST), i contatori Redis persistenti evitano reset dopo restart. Memcached richiederebbe logica di recovery più complessa.
Configurazione Redis per WordPress production
Sul 70% dei nostri server client usiamo questa configurazione redis.conf:
maxmemory 2gb maxmemory-policy allkeys-lru save "" appendonly no tcp-backlog 511 timeout 300 tcp-keepalive 60
Notate save "" e appendonly no: disabilitiamo la persistenza intenzionalmente. Per WordPress puro, la performance è prioritaria. Risultato: Redis diventa veloce quanto Memcached ma con strutture dati più ricche.
Compatibilità plugin e ecosystem WordPress
La realtà pratica: l’ecosystem WordPress favorisce Redis.
Plugin di object caching
- Redis Object Cache (Till Krüss): 900k+ installazioni, aggiornato costantemente, supporta Redis 7.x, ottimo debug dashboard
- Memcached Object Cache: integrato in WordPress core ma meno manutenuto, nessuna UI, configurazione manuale
- LiteSpeed Cache: supporta entrambi ma ottimizzato per LSCache proprio
Redis Object Cache di Till Krüss è lo standard de facto. Offre metriche real-time, flush selettivo, supporto per Redis Cluster. Memcached richiede più lavoro manuale.
Hosting managed e supporto
Survey interno su 45 provider italiani e internazionali (marzo 2026):
- Redis disponibile: 41/45 provider (91%)
- Memcached disponibile: 28/45 provider (62%)
- Redis incluso nei piani base: 23/45 (51%)
Kinsta, WP Engine, Cloudways, SiteGround e la maggior parte dei managed host offrono Redis out-of-the-box. Memcached richiede spesso VPS o piani dedicati.
Quando scegliere Memcached
Memcached non è morto, ha casi d’uso specifici dove eccelle:
Setup multi-server distribuito
Memcached è nato per il caching distribuito. Se avete 5+ web server che condividono una cache farm di 3+ server Memcached, la sua architettura multi-threaded scala meglio. Gestisce 100k+ connessioni simultanee più efficientemente di Redis single-threaded.
Team con esperienza consolidata
Se la vostra agenzia usa Memcached da anni, conosce i pattern, ha monitoring e playbook consolidati, migrare a Redis può non portare benefici tangibili. Il costo nascosto del cambio tooling è reale.
Budget RAM limitato con workload semplice
Su VPS entry-level (2-4GB RAM) dove ogni MB conta, e il workload è puramente GET di stringhe serializzate, Memcached può dare 10-15% di performance in più grazie alla latenza inferiore. Ma è un edge case sempre più raro.
Quando scegliere Redis
Redis è la scelta predefinita per il 90% dei progetti WordPress moderni:
Siti WooCommerce e membership
WooCommerce genera oggetti complessi (carrelli, sessioni, wishlist) che beneficiano degli hash Redis. Inoltre, la persistenza opzionale protegge sessioni durante restart programmati.
Headless WordPress e API-first
Se WordPress è backend API per frontend React/Vue, Redis offre pub/sub per invalidazione cache real-time, sorted set per ranking/filtering, TTL granulare per endpoint specifici.
Multi-sito e network complessi
Redis supporta database multipli (0-15) che permettono segregazione per site_id in multisite WordPress. Memcached richiederebbe key prefixing manuale più complesso.
Monitoraggio e debugging
Redis fornisce INFO, SLOWLOG, CLIENT LIST e altri comandi diagnostici essenziali. Il plugin Redis Object Cache espone queste metriche in dashboard. Con Memcached serve telemetria custom.
Setup consigliato per agenzie
La nostra configurazione standard su 80+ siti client:
Stack tecnologico
- Redis 7.2 (ultima stable, supporto cluster migliorato)
- Plugin: Redis Object Cache 2.5+ con UI dashboard
- PHP extension: phpredis (C extension, 3x più veloce di Predis PHP puro)
- Monitoring: redis_exporter + Prometheus o CloudWatch
Configurazione WordPress wp-config.php
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);
define('WP_REDIS_MAXTTL', 86400);
define('WP_REDIS_TIMEOUT', 1);
define('WP_REDIS_READ_TIMEOUT', 1);
Gruppi cache non persistenti
Alcuni dati WordPress non vanno cachati in Redis. Nel object-cache.php drop-in:
$redis_server = array(
'host' => '127.0.0.1',
'port' => 6379,
);
$non_persistent_groups = array(
'comment',
'counts',
'plugins',
);
Questo evita stale data su contatori dinamici e commenti.
Costi e considerazioni operative
Analisi TCO (Total Cost of Ownership) su cluster 3-node per high-availability:
Redis
- AWS ElastiCache: cache.m6g.large (2 vCPU, 6.38 GB) con replica = ~240€/mese
- Self-managed: 3x server 4GB RAM = ~90€/mese + 8-12 ore setup/mese
- Complessità: media (sentinel/cluster richiede competenze)
Memcached
- AWS ElastiCache: cache.m6g.large con 2 nodi = ~160€/mese
- Self-managed: 2x server 4GB RAM = ~60€/mese + 4-6 ore setup/mese
- Complessità: bassa (configurazione più semplice)
Redis costa 30-50% in più su managed service, ma la differenza si riduce con self-hosting. Il valore aggiunto sono funzionalità e ecosystem.
Migrare da Memcached a Redis
Processo testato su 12 migrazioni nel 2025-2026:
- Installare Redis sullo stesso server, porta 6379
- Installare phpredis:
pecl install redis && echo "extension=redis.so" > /etc/php/8.3/mods-available/redis.ini - Installare plugin Redis Object Cache via WP-CLI o dashboard
- Testare in staging: attivare object cache, verificare hit rate dashboard
- Deployment production: atomic swap del
object-cache.phpdrop-in - Flush cache Memcached e disabilitare servizio
Downtime effettivo: 0 secondi. Il sito rigenera cache Redis nei primi 5-10 minuti, con leggero aumento query DB.
Checklist post-migrazione
- Verificare hit rate >85% dopo 1 ora (dashboard plugin)
- Monitorare
used_memoryRedis: deve essere <95% maxmemory - Controllare PHP error log per connection timeout
- Testare flush cache manuale e verifica rigenerazione
- Configurare alert su Redis memory usage >90%
FAQ
Redis consuma più RAM di Memcached?
No, è il contrario. Redis ha overhead del 15-20%, Memcached del 30-40% a causa dello slab allocation. Su 1GB di dati cachati, Redis usa ~1.2GB totali, Memcached ~1.4GB. Redis è più efficiente su workload WordPress tipici con oggetti di dimensioni variabili.
Posso usare Redis e Memcached insieme su WordPress?
Tecnicamente sì, ma è inutile. WordPress supporta un solo persistent object cache backend. Potreste usare Redis per object cache e Memcached per sessioni PHP, ma complica architettura senza benefici reali. Scegliete Redis per tutto o Memcached per tutto.
Redis rallenta con molte chiavi (milioni)?
Redis gestisce 10M+ chiavi senza problemi su hardware moderno. La latenza resta <1ms per GET su dataset da 50M chiavi con 16GB RAM. WordPress raramente supera 100k chiavi cached. Attenzione però ai comandi KEYS * (O(n), mai usare in production): usate SCAN.
Quale hit rate object cache è considerato buono?
Su WordPress ottimizzato: 85-95% è ottimo, 70-85% è buono, <70% indica problemi (TTL troppo breve, maxmemory insufficiente, gruppi non persistent errati). Monitorate con Redis Object Cache dashboard o wp redis info via WP-CLI.
Redis funziona con plugin caching come WP Rocket?
Sì, sono complementari. WP Rocket fa page caching (HTML statico), Redis fa object caching (query DB, transient API). Usateli insieme: WP Rocket per visitatori anonimi, Redis per backend e utenti loggati. L’hit rate complessivo arriva al 98%+.