cache
databases
redis
rocky
tutos
Redis sur Rocky Linux 9
Installation et configuration de Redis comme cache et broker de messages.
Composant
Version
Rocky Linux
9.x
Redis
6.2+ / 7.x
Durée estimée : 25 minutes
Cas d'utilisation
Usage
Description
Cache
Sessions PHP, objets, pages
Broker
File de messages, pub/sub
Base
Stockage clé-valeur
Compteurs
Rate limiting, statistiques
1. Installation
Depuis les repos AppStream
dnf install -y redis
# Version
redis-server --version
Depuis Remi (version récente)
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
dnf module reset redis
dnf module enable redis:remi-7.2
dnf install -y redis
2. Configuration de base
cp /etc/redis/redis.conf /etc/redis/redis.conf.bak
vim /etc/redis/redis.conf
# Écouter sur toutes les interfaces (ou 127.0.0.1 pour local)
bind 0.0.0.0
# Port
port 6379
# Mot de passe
requirepass VotreMotDePasseSecurise
# Mode démon
daemonize no
# Fichier PID
pidfile /var/run/redis/redis.pid
# Logging
loglevel notice
logfile /var/log/redis/redis.log
# Bases de données
databases 16
# Persistance RDB
save 900 1
save 300 10
save 60 10000
# Fichier RDB
dbfilename dump.rdb
dir /var/lib/redis
# Mémoire max (50% de la RAM)
maxmemory 2gb
maxmemory-policy allkeys-lru
# Timeout connexion
timeout 300
# TCP keepalive
tcp-keepalive 300
3. Persistance
RDB (snapshot)
# Sauvegarde si X modifications en Y secondes
save 900 1 # 1 modif en 15 min
save 300 10 # 10 modifs en 5 min
save 60 10000 # 10000 modifs en 1 min
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
AOF (Append Only File)
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
# Réécriture automatique
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
Hybride (recommandé)
4. Démarrer Redis
systemctl enable --now redis
systemctl status redis
Tester la connexion
redis-cli
# Avec authentification
redis-cli -a VotreMotDePasseSecurise
# Commandes de test
127 .0.0.1:6379> AUTH VotreMotDePasseSecurise
127 .0.0.1:6379> PING
PONG
127 .0.0.1:6379> SET test "Hello Redis"
OK
127 .0.0.1:6379> GET test
"Hello Redis"
127 .0.0.1:6379> INFO
5. Firewall et SELinux
# Firewall
firewall-cmd --permanent --add-port= 6379 /tcp
firewall-cmd --reload
# SELinux (si accès réseau)
setsebool -P redis_enable_remote_connections on
6. Sécurisation
Renommer les commandes dangereuses
# Dans redis.conf
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""
rename-command CONFIG "CONFIG_b840fc02d524045429941cc15f59e41cb7be6c52"
TLS (Redis 6+)
# Générer certificats
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/redis/redis.key \
-out /etc/redis/redis.crt \
-subj "/CN=redis.example.com"
chmod 600 /etc/redis/redis.key
chown redis:redis /etc/redis/redis.*
# redis.conf
tls-port 6380
port 0
tls-cert-file /etc/redis/redis.crt
tls-key-file /etc/redis/redis.key
tls-ca-cert-file /etc/redis/redis.crt
7. Redis Sentinel (haute disponibilité)
Architecture
┌──────────────┐
│ Sentinel 1 │
└──────┬───────┘
│
┌──────────────┼──────────────┐
│ │ │
▼ ▼ ▼
┌────────┐ ┌────────┐ ┌────────┐
│ Master │ │Replica1│ │Replica2│
└────────┘ └────────┘ └────────┘
Configuration Replica
# Sur les réplicas
replicaof 192.168.1.10 6379
masterauth VotreMotDePasseSecurise
Configuration Sentinel
cat > /etc/redis/sentinel.conf << 'EOF'
port 26379
daemonize yes
pidfile /var/run/redis/redis-sentinel.pid
logfile /var/log/redis/sentinel.log
sentinel monitor mymaster 192.168.1.10 6379 2
sentinel auth-pass mymaster VotreMotDePasseSecurise
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
EOF
redis-sentinel /etc/redis/sentinel.conf
8. Redis Cluster (scalabilité)
# Créer 6 instances (3 masters, 3 replicas)
redis-cli --cluster create \
192 .168.1.10:6379 \
192 .168.1.11:6379 \
192 .168.1.12:6379 \
192 .168.1.10:6380 \
192 .168.1.11:6380 \
192 .168.1.12:6380 \
--cluster-replicas 1 \
-a VotreMotDePasseSecurise
9. Monitoring
Commandes INFO
redis-cli INFO memory
redis-cli INFO replication
redis-cli INFO stats
redis-cli INFO clients
Redis CLI monitor
Métriques clés
# Mémoire utilisée
redis-cli INFO memory | grep used_memory_human
# Connexions
redis-cli INFO clients | grep connected_clients
# Hits/Misses cache
redis-cli INFO stats | grep keyspace
10. Intégration applications
PHP (php-redis)
dnf install -y php-redis
systemctl restart php-fpm
<?php
$redis = new Redis ();
$redis -> connect ( '127.0.0.1' , 6379 );
$redis -> auth ( 'VotreMotDePasseSecurise' );
// Cache
$redis -> set ( 'key' , 'value' , 3600 );
echo $redis -> get ( 'key' );
// Sessions PHP
// Dans php.ini:
// session.save_handler = redis
// session.save_path = "tcp://127.0.0.1:6379?auth=password"
Python
import redis
r = redis . Redis (
host = 'localhost' ,
port = 6379 ,
password = 'VotreMotDePasseSecurise' ,
decode_responses = True
)
r . set ( 'foo' , 'bar' )
print ( r . get ( 'foo' ))
Commandes utiles
# Info complète
redis-cli INFO
# Statistiques mémoire
redis-cli MEMORY STATS
# Liste des clés
redis-cli KEYS "*"
# Supprimer une clé
redis-cli DEL key
# TTL d'une clé
redis-cli TTL key
# Flush base courante
redis-cli FLUSHDB
# Sauvegarde manuelle
redis-cli BGSAVE
# Dernière sauvegarde
redis-cli LASTSAVE
Dépannage
# Logs
tail -f /var/log/redis/redis.log
# Status
systemctl status redis
# Test connexion
redis-cli PING
# Latence
redis-cli --latency
# Mémoire
redis-cli INFO memory
Changelog
Date
Modification
2024-12
Création initiale