Skip to content

Redis: guida tecnica completa all’installazione, configurazione e ottimizzazione

Redis è il sistema di caching in-memory più diffuso al mondo. Nato nel 2009 come progetto open source di Salvatore Sanfilippo, è diventato lo standard de facto per object caching, session store e message broker in architetture web ad alte prestazioni. Il nome è l’acronimo di REmote DIctionary Server: un database chiave-valore che opera interamente in RAM, con latenze nell’ordine dei microsecondi.

In guide precedenti ho trattato OPcache e Memcached. Redis copre uno spazio funzionale diverso e più ampio: non si limita a memorizzare coppie chiave-valore semplici, ma supporta strutture dati complesse — stringhe, hash, liste, set, set ordinati, stream, bitmap e HyperLogLog. Con la versione 8.0 (2025) ha integrato nel core anche moduli che prima richiedevano Redis Stack: ricerca full-text, documenti JSON, serie temporali, filtri di Bloom e vector search nativo per workload AI/RAG.

Questa guida copre l’intero ciclo di vita: dall’installazione su Ubuntu moderno (22.04/24.04) con PHP 8.x, alla configurazione per ambienti di produzione, fino all’integrazione con WordPress e al monitoraggio operativo.


Cos’è Redis e a cosa serve

Redis è un data structure store in-memory. A differenza dei database relazionali che scrivono su disco e usano la RAM come cache, Redis opera nativamente in memoria e usa il disco solo per la persistenza opzionale. Questo gli consente di gestire milioni di operazioni al secondo con latenze sub-millisecondo.

I casi d’uso principali in ambito web:

  • Object caching — riduce le query al database memorizzando risultati frequenti (transient, option, query result) in RAM
  • Session store — gestione sessioni PHP/applicative con TTL automatico, più veloce e scalabile delle sessioni su filesystem
  • Message broker — code di messaggi con Redis Streams e Pub/Sub per architetture event-driven e microservizi
  • Rate limiting — contatori atomici con scadenza per throttling API e protezione da abusi
  • Full-text search e vector search — con Redis 8.0, ricerca testuale e vettoriale integrate nel core per applicazioni AI/RAG
  • Cache distribuita — in architetture multi-server e cluster, Redis condivide lo stato tra nodi applicativi

Il vantaggio competitivo di Redis rispetto a Memcached è la ricchezza delle strutture dati. Memcached gestisce solo stringhe; Redis supporta operazioni atomiche su hash, liste ordinate, set con intersezioni, e comandi specializzati come INCR, LPUSH, ZADD che eliminano la necessità di read-modify-write lato applicazione. Questo si traduce in meno round-trip e meno codice.


Licenza e il fork Valkey

Il 20 marzo 2024 Redis Ltd. ha cambiato la licenza del progetto: dalla BSD-3-Clause (pienamente open source) alla dual license SSPLv1 / RSALv2. Nessuna delle due è riconosciuta come open source dalla Open Source Initiative (OSI). La motivazione dichiarata: impedire ai cloud provider (AWS, Google Cloud, Azure) di offrire Redis come servizio gestito senza contribuire al progetto.

La risposta della community è stata immediata. Nel marzo 2024 è nato Valkey, un fork di Redis 7.2.4 (l’ultima versione BSD) ospitato dalla Linux Foundation con governance vendor-neutral. Tra i contributor principali: AWS, Google Cloud, Oracle, Ericsson e diversi ex-maintainer core di Redis.

Cosa significa in pratica:

  • Redis 8.x (Redis Ltd.) — source-available, gratuito per uso interno e sviluppo, ma non è possibile offrirlo come servizio cloud senza accordo commerciale
  • Valkey 8.x (Linux Foundation) — licenza BSD, drop-in replacement, stesso protocollo RESP, stesse librerie client, compatibile al 100%
  • I principali cloud provider (AWS ElastiCache, Google Memorystore) sono migrati a Valkey
  • Le distribuzioni Linux (Fedora, Debian) stanno sostituendo Redis con Valkey nei repository
  • Per un uso WordPress/PHP su server proprio, entrambi funzionano in modo identico — la scelta è filosofica/legale, non tecnica

Nota: tutti i comandi e le configurazioni in questa guida funzionano sia con Redis che con Valkey. Dove necessario, indicherò le differenze nei comandi di installazione.


Redis 8: cosa cambia

Redis 8.0, rilasciato nel 2025, è la prima major release sotto la nuova licenza e porta cambiamenti significativi. Il più rilevante: tutti i moduli di Redis Stack sono integrati nel core. Installando Redis 8 si ottengono nativamente funzionalità che prima richiedevano distribuzioni separate:

ModuloFunzionalitàCaso d’uso
RediSearchRicerca full-text + vector searchMotore di ricerca interno, RAG per LLM
RedisJSONDocumenti JSON nativiStorage documenti senza serializzazione
RedisTimeSeriesSerie temporaliMetriche, monitoraggio, IoT
RedisBloomFiltri probabilistici (Bloom, Cuckoo)Deduplicazione, membership test

Altre novità di rilievo:

  • I/O threading migliorato — utilizzo più efficiente dei core CPU per le operazioni di I/O. Redis resta single-threaded per l’esecuzione dei comandi (garanzia di atomicità), ma il networking è ora parallelizzato
  • Hash-based expiry su sub-key — scadenza granulare sui singoli campi degli hash
  • ACL v2 consolidate — permessi selector-based per chiave, comando e canale Pub/Sub
  • Persistenza AOF multi-part — introdotta in Redis 7, ora stabilizzata: file base + incrementali per recovery più veloce

Installare Redis su Ubuntu 22.04 e 24.04

L’installazione su Ubuntu moderno richiede pochi minuti. Mostro entrambe le opzioni: Redis (repo ufficiale Redis Ltd.) e Valkey.

Opzione A: Redis dal repository ufficiale

Aggiorna i pacchetti e aggiungi il repository Redis:

sudo apt update && sudo apt upgrade -y

# Aggiungi la chiave GPG e il repository
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

sudo apt update
sudo apt install redis -y

Opzione B: Valkey

Su Ubuntu 24.04 e successivi, Valkey è disponibile nei repository universe. In alternativa, usa il repository ufficiale del progetto:

sudo apt install valkey -y

# Oppure da Docker
docker run -d --name valkey -p 6379:6379 valkey/valkey:8

Abilitare il servizio

Dopo l’installazione, abilita l’avvio automatico e verifica lo stato:

sudo systemctl enable redis-server
sudo systemctl start redis-server
sudo systemctl status redis-server

Nota: per Valkey, il nome del servizio è valkey-server anziché redis-server.


Configurazione per ambienti di produzione

La configurazione di default è pensata per lo sviluppo. Per un ambiente di produzione servono interventi su memoria, sicurezza, persistenza e tuning del kernel.

Il file di configurazione principale si trova in:

/etc/redis/redis.conf

Memoria e policy di eviction

# Limite massimo di memoria (adatta al tuo server)
maxmemory 512mb

# Policy di eviction: rimuovi le chiavi meno usate di recente
maxmemory-policy allkeys-lru

La policy allkeys-lru è la scelta standard per il caching: quando Redis raggiunge il limite di memoria, rimuove automaticamente le chiavi con accesso meno recente. Alternative utili: volatile-lru (solo chiavi con TTL), allkeys-lfu (least frequently used, disponibile da Redis 4+).

Sicurezza

# Bind solo su localhost (o sulle interfacce necessarie)
bind 127.0.0.1 ::1

# Modalità protetta: rifiuta connessioni esterne senza password
protected-mode yes

# Password di accesso (usa una stringa lunga e casuale)
requirepass tua-password-complessa-qui

# ACL: disabilita comandi pericolosi per utenti non-admin
# Esempio: rinomina FLUSHALL per impedirne l'uso accidentale
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command DEBUG ""

Nota: da Redis 6+ è disponibile il sistema ACL completo, più granulare del semplice requirepass. Per ambienti con più applicazioni sullo stesso server Redis, le ACL permettono di creare utenti con permessi limitati a specifici pattern di chiavi e comandi.

Persistenza

Redis offre due meccanismi di persistenza, combinabili:

MeccanismoCome funzionaQuando usarlo
RDB (snapshot)Salvataggio periodico di tutto il dataset su discoCaching puro — perdere qualche minuto di dati è accettabile
AOF (Append Only File)Log di ogni operazione di scrittura, replay al restartSession store, code — servono garanzie di durabilità
RDB + AOFCombinazione: AOF per durabilità, RDB per backup velociProduzione — raccomandata da Redis per il recovery più sicuro
# Abilitare AOF
appendonly yes
appendfsync everysec

# RDB: snapshot ogni 3600 sec se almeno 1 chiave è cambiata
save 3600 1
save 300 100
save 60 10000

Tuning del kernel Linux

Per prestazioni ottimali in produzione, applica queste configurazioni a livello di sistema operativo:

# Overcommit memory: evita errori di fork durante il salvataggio RDB/AOF
sudo sysctl vm.overcommit_memory=1

# Disabilita Transparent Huge Pages (causa latenze)
echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled

# Per rendere permanenti le modifiche, aggiungi a /etc/sysctl.conf:
# vm.overcommit_memory = 1
# E in /etc/rc.local o in un servizio systemd:
# echo never > /sys/kernel/mm/transparent_hugepage/enabled

Dopo le modifiche, riavvia il servizio:

sudo systemctl restart redis-server

Installare l’estensione PHP per Redis

L’estensione phpredis è il client C ad alte prestazioni per PHP. Supporta PHP 8.0, 8.1, 8.2, 8.3 e 8.4, ed è compatibile sia con Redis che con Valkey.

# Installa l'estensione per la tua versione di PHP
sudo apt install php8.3-redis -y

# Oppure tramite PECL
sudo pecl install redis

# Verifica l'installazione
php -m | grep redis

Se usi PHP-FPM (come nella maggior parte delle configurazioni Nginx), riavvia il servizio dopo l’installazione:

sudo systemctl restart php8.3-fpm

Configurazione php.ini

Per usare Redis come session handler PHP (alternativa ai file di sessione su disco):

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?auth=tua-password"

Alternativa: Predis

Se non puoi installare estensioni C (hosting condiviso), Predis è un client Redis scritto interamente in PHP. Si installa via Composer (composer require predis/predis) ed è leggermente più lento di phpredis, ma non richiede compilazione. Predis 2.x supporta PHP 8.x e funziona con Valkey.


Redis e WordPress

WordPress dispone di un’API di object caching interna (wp_cache_get, wp_cache_set) che di default è non persistente — i dati vivono solo per la durata della singola richiesta HTTP. Collegando Redis come backend persistente, le query più frequenti al database (opzioni, transient, risultati WP_Query) vengono servite dalla RAM riducendo drasticamente il carico su MySQL.

Configurazione wp-config.php

Aggiungi le seguenti costanti al file wp-config.php, prima della riga /* That's all, stop editing! */:

/* Redis Object Cache */
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_PASSWORD', 'tua-password-redis');
define('WP_REDIS_DATABASE', 0);
define('WP_REDIS_PREFIX', 'wp_tuosito_');
define('WP_REDIS_MAXTTL', 86400); // 24 ore

Il parametro WP_REDIS_PREFIX è fondamentale se hai più installazioni WordPress sullo stesso server Redis: ogni sito deve avere un prefisso univoco per evitare collisioni di chiavi. In alternativa, usa WP_REDIS_DATABASE con un numero diverso per ogni sito (Redis supporta 16 database, da 0 a 15).

Plugin: Redis Object Cache

Il plugin Redis Object Cache (di Till Krüss) è lo standard per WordPress. Fornisce il drop-in object-cache.php che sostituisce il caching non persistente di default. Funziona con phpredis e Predis, supporta Redis 6/7/8 e Valkey.

Installazione:

  1. Installa e attiva il plugin da WordPress (o via WP-CLI: wp plugin install redis-cache --activate)
  2. Vai in Impostazioni → Redis e clicca Enable Object Cache
  3. Verifica che lo stato sia Connected

Per installazioni enterprise, Object Cache Pro (versione commerciale) offre connection pooling, compressione, prefetching, analytics e supporto multisite avanzato.


Comandi essenziali e monitoraggio

Il client CLI redis-cli è lo strumento principale per interagire con Redis. Verifica la connessione con un semplice ping:

redis-cli

127.0.0.1:6379> AUTH tua-password
OK
127.0.0.1:6379> PING
PONG

Comandi informativi

redis-cli INFO server        # Versione, uptime, configurazione
redis-cli INFO memory        # Utilizzo RAM, frammentazione, allocatore
redis-cli INFO clients       # Connessioni attive, bloccate, in attesa
redis-cli INFO stats         # Operazioni/sec, hit/miss ratio, eviction
redis-cli INFO replication   # Stato replica master/slave
redis-cli INFO keyspace      # Numero chiavi per database, TTL stats

Monitoraggio in tempo reale

# Mostra ogni comando eseguito in tempo reale (debug)
redis-cli MONITOR

# Statistiche di latenza
redis-cli --latency

# Diagnostica memoria (Redis 7+)
redis-cli MEMORY DOCTOR

# Scansiona le chiavi (non bloccante, a differenza di KEYS *)
redis-cli SCAN 0 COUNT 100

Nota: non usare mai KEYS * in produzione — è un comando bloccante che scansiona l’intero keyspace. Usa sempre SCAN con cursore per iterare le chiavi in modo non bloccante.


Cancellare la cache Redis

Comandi per la gestione della cache:

# Elimina TUTTE le chiavi da TUTTI i database
redis-cli FLUSHALL

# Elimina tutte le chiavi dal database corrente
redis-cli FLUSHDB

# Elimina le chiavi di un database specifico
redis-cli -n 2 FLUSHDB

# Versione asincrona (non bloccante, Redis 6+)
redis-cli FLUSHALL ASYNC

Da Redis 6 in poi, i comandi FLUSHALL ASYNC e FLUSHDB ASYNC eseguono la cancellazione in background senza bloccare il server — preferibili in produzione.

Se usi WordPress con il plugin Redis Object Cache, puoi svuotare la cache anche dalla dashboard WordPress (Impostazioni → Redis → Flush Cache) o via WP-CLI:

wp redis flush

Nginx FastCGI Cache vs Redis Object Cache

Questi due sistemi di caching operano a livelli diversi dello stack e non sono mutuamente esclusivi. In molte configurazioni di produzione si usano entrambi in modo complementare.

CaratteristicaFastCGI Cache (Nginx)Redis Object Cache
Cosa cacheaL’intera risposta HTTP (pagina completa)Singoli oggetti: query DB, transient, option
Dove operaA livello di web server, prima di PHPA livello applicativo, dentro PHP/WordPress
VelocitàEstrema — Nginx serve direttamente dal disco/RAM senza toccare PHPMolto veloce — elimina query al DB, ma PHP deve comunque eseguire
GranularitàTutto-o-niente per URLGranulare: ogni singola query/opzione è cacheable
Multi-serverLocale al singolo serverCondivisibile tra più server nel cluster
Utenti loggatiRichiede bypass o segmentazioneFunziona trasparentemente per tutti gli utenti

Raccomandazione pratica: su un singolo server con WordPress, usa FastCGI Cache per le pagine pubbliche (visitatori non loggati) e Redis Object Cache per le pagine dinamiche (admin, utenti loggati, WooCommerce). In un’architettura multi-server, Redis è indispensabile perché consente di condividere lo stato della cache tra tutti i nodi del cluster.


Rimuovere Redis

Se necessario, la disinstallazione è pulita e rapida:

# Ferma e disabilita il servizio
sudo systemctl stop redis-server
sudo systemctl disable redis-server

# Rimuovi i pacchetti
sudo apt purge --auto-remove redis-server -y
sudo apt purge --auto-remove php8.3-redis -y

# Rimuovi l'utente di sistema (se presente)
sudo deluser redis

# Rimuovi i file di configurazione residui
sudo rm -rf /etc/redis /var/lib/redis /var/log/redis

Se usi WordPress, disattiva prima il plugin Redis Object Cache e rimuovi il drop-in object-cache.php dalla cartella wp-content/ prima di disinstallare Redis dal server.

Articoli correlati

21 min lettura

Ridurre i tempi di risposta del server è vitale per abbattere il TTFB e dominare metriche come LCP e INP. Workflow tecnico per aumentare la velocità dell'hosting: dalla transizione verso VPS alla configurazione avanzata dello stack LEMP per ottenere server realmente accelerati.
33 mi piace
5 min lettura

Configurazione tecnica di Certbot per Nginx su Ubuntu 22.04 e 24.04 LTS. La procedura aggiornata per installare il client Let's Encrypt via Snap, abbandonare il vecchio PPA e automatizzare i certificati SSL/TLS 1.3, inclusa la gestione dei wildcard tramite DNS challenge.
13 mi piace

Autore

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ultimi articoli aggiornati

16 min lettura

Metodologia operativa per la diagnosi di problemi su web server Linux tramite l'analisi dei log di sistema e applicativi. Il testo dettaglia l'ispezione di /var/log, l'interrogazione dei demoni con journalctl per monitorare lo stack LEMP e la configurazione di logrotate.
0 mi piace
21 min lettura

I crawler di Meta e Amazon generano milioni di richieste senza back-off: come quantificarli nei log, verificarne l'autenticità e fermarli con cache, robots.txt, rate limiting e WAF, senza perdere i link preview.
1 mi piace
22 min lettura

Difendere WordPress dai commenti spam con una strategia defense in depth a tre layer: configurazioni applicative, regole edge su Cloudflare, barriere a livello web server. Honeypot PHP, regole .htaccess e Nginx modernizzate, Cloudflare Turnstile, fail2ban. Snippet completi pronti da incollare.
0 mi piace
22 min lettura

Analisi tecnica della persistenza dei dati nel protocollo HTTP tramite header Set-Cookie. Comprendere la meccanica dei cookie, attributi come Max-Age e i limiti di Googlebot come crawler stateless è essenziale per diagnosticare problemi di rendering e involuntary cloaking.
4 mi piace
19 min lettura

Analisi dell'architettura RAG nativa per WordPress sviluppata interamente in PHP e MySQL, senza dipendenze da database vettoriali esterni. Il sistema supera i limiti della ricerca lessicale integrando la ricerca semantica su VPS o hosting condivisi con meno di 1GB di RAM.
3 mi piace

Richiedi un preventivo SEO e Google Ads

Porta il tuo sito web al livello successivo con l’esperienza di EVE Milano. La nostra agenzia di Search Marketing ha ricevuto oltre

User Access Addon Required

This shortcode requires the CF7 Database User Access addon to display data.

Please purchase and install the User Access addon to enable this feature.

Purchase User Access Addon

richieste di preventivo, un segnale chiaro della fiducia che imprenditori e manager, come te, ripongono nella nostra specializzazione tecnica e verticale nella SEO e PPC. Se la tua organizzazione cerca competenze specifiche per emergere nei risultati di Google, noi siamo pronti a fornire quel valore aggiunto. Richiedi un preventivo ora e scopri la differenza tra noi e gli altri.
Richiedi un preventivo

Vuoi ricevere un avviso al mese con le nuove guide pubblicate?

Iscriviti alla newsletter!