Scale · 00 · Setup dell'ambiente
Percorso hands-on che copre lo stesso terreno operativo del syllabus Running Redis at Scale: connessioni, persistenza, alta disponibilità, scalabilità, osservabilità. Tutti gli esercizi sono stati eseguiti e validati su Redis 7.0.15; dove il comportamento cambia tra versioni è segnalato.
0.1 Installazione
Sezione intitolata “0.1 Installazione”RHEL 8 / 9 (il caso della tua flotta)
Sezione intitolata “RHEL 8 / 9 (il caso della tua flotta)”dnf module list redis # stream disponibili in AppStreamdnf module enable redis:7 -y # se lo stream 7 è presentednf install -y redisredis-server --versionSe l’AppStream è fermo a una minor troppo vecchia, il repo ufficiale Redis:
dnf install -y https://packages.redis.io/redis-stack/redis-stack-server.rpm 2>/dev/null || true# in alternativa (ambienti connessi):curl -fsSL https://packages.redis.io/gpg > /tmp/redis.gpgrpm --import /tmp/redis.gpgcat > /etc/yum.repos.d/redis.repo <<'EOF'[redis]name=Redisbaseurl=https://packages.redis.io/rpm/rhel9enabled=1gpgcheck=1EOFdnf install -y redisDebian / Ubuntu
Sezione intitolata “Debian / Ubuntu”apt-get update && apt-get install -y redis-server redis-sentinelredis-server --version && redis-cli --versionDa sorgente (versione esatta, nessun repo)
Sezione intitolata “Da sorgente (versione esatta, nessun repo)”dnf install -y gcc make jemalloc-devel openssl-devel systemd-devel # RHELcurl -fsSLO https://download.redis.io/redis-stable.tar.gztar xzf redis-stable.tar.gz && cd redis-stablemake BUILD_TLS=yes USE_SYSTEMD=yes -j"$(nproc)"make install PREFIX=/usr/localVerifica dei binari
Sezione intitolata “Verifica dei binari”for b in redis-server redis-cli redis-sentinel redis-benchmark redis-check-aof redis-check-rdb; do printf "%-18s %s\n" "$b" "$(command -v $b || echo MANCANTE)"doneTi servono tutti e sei. redis-check-aof e redis-check-rdb sono spesso
symlink a redis-server: è normale.
0.2 Un’istanza pulita per i lab
Sezione intitolata “0.2 Un’istanza pulita per i lab”Non usare il servizio di sistema per gli esercizi: lavora in una directory
dedicata, così puoi distruggere e ricreare senza toccare /etc/redis.
mkdir -p ~/redis-lab/single && cd ~/redis-lab/singleredis-server --port 6379 --dir ~/redis-lab/single \ --daemonize yes --logfile r.log \ --enable-debug-command yes \ --unixsocket ~/redis-lab/single/redis.sockredis-cli PINGTeardown, sempre disponibile:
redis-cli -p 6379 SHUTDOWN NOSAVE 2>/dev/nullrm -rf ~/redis-lab/single0.3 Le tre topologie del percorso
Sezione intitolata “0.3 Le tre topologie del percorso”| Topologia | Porte | Usata in |
|---|---|---|
| Singola istanza | 6379 | 01 Connessioni, 02 Persistenza, 05 Osservabilità |
| 1 master + 2 replica + 3 Sentinel | 6379–6381, 26379–26381 | 03 Alta disponibilità |
| Cluster 3 master + 3 replica | 7000–7005 | 04 Scalabilità |
Gli script sentinel-up.sh / cluster-up.sh nel repository (labs/scripts/)
alzano le ultime due in un colpo solo. Nel percorso li costruiamo a mano la
prima volta: è il punto in cui si impara cosa fa ogni flag.
0.4 Baseline: misura prima di toccare
Sezione intitolata “0.4 Baseline: misura prima di toccare”Registra questi valori a sistema sano. Ti serviranno come termine di paragone in ogni esercizio successivo.
redis-cli --intrinsic-latency 5 | tail -1 # latenza dell'host, senza reteredis-cli --latency | tail -1 # RTT client→serverredis-benchmark -n 10000 -c 10 -t set,get -q # throughput di riferimentoredis-cli INFO server | grep -E 'redis_version|os|arch_bits|process_id' | tr -d '\r'Su un host di lab non caricato l’ordine di grandezza atteso è: latenza
intrinseca sotto il millisecondo, --latency avg ~0.1 ms in loopback,
throughput a cinque cifre per secondo.
Checklist prima di procedere
Sezione intitolata “Checklist prima di procedere”-
redis-server --version≥ 7.0 - tutti e sei i binari presenti
- istanza di lab attiva su 6379 con
enable-debug-command - baseline di latenza e throughput registrata
-
ulimit -ndell’utente ≥ 10240 (ulimit -n)
Prossimo passo: 01 · Connessioni.