1. Návrh a hranice
Redis se hodí pro položky cache, relace, fronty a krátkodobý stav aplikace. Nenahrazuje MariaDB, zálohy ani trvalá data uživatelů.
Zamýšlená topologie: aplikace v PHP i Redis běží na stejném VPS a aplikace se připojuje přes 127.0.0.1:6379 nebo lokální unixový socket.
2. Instalace a spuštění Redisu
apt update
apt -y install redis-server
systemctl enable --now redis-server
systemctl --no-pager status redis-server
redis-server --version
Debian službu spravuje jako redis-server.service. Na stejném portu nespouštějte další ručně stažený démon Redisu.
3. Naslouchejte jen lokálně
Než připojíte aplikaci, zkontrolujte aktivní naslouchání:
ss -lntp | grep 6379
grep -E '^(bind|protected-mode|port|unixsocket)' /etc/redis/redis.conf | grep -v '^#' || true
Služba má naslouchat na TCP adrese 127.0.0.1:6379 a tam, kde je zapnuté, také [::1]:6379. Ponechte protected-mode yes. Pokud dáváte přednost lokálnímu unixovému socketu, vytvořte vyhrazenou skupinu a přístup dejte jen servisnímu účtu webové aplikace.
4. Nastavte paměť a perzistenci promyšleně
Redis používá RAM. Než nastavíte limit, vyhraďte paměť pro Apache/PHP-FPM, MariaDB, Elasticsearch a operační systém. Nasazení jen jako cache obvykle používá politiku vytěsňování; nasazení pro fronty a relace často potřebuje i perzistenci.
redis-cli INFO memory
redis-cli CONFIG GET maxmemory
redis-cli CONFIG GET maxmemory-policy
redis-cli CONFIG GET appendonly
redis-cli CONFIG GET save
Příklad politiky pro cache — velikost přizpůsobte svému VPS podle skutečného využití paměti:
cat >/etc/redis/conf.d/99-application-cache.conf <<'EOF'
maxmemory 256mb
maxmemory-policy allkeys-lru
EOF
systemctl restart redis-server
redis-cli CONFIG GET maxmemory
redis-cli CONFIG GET maxmemory-policy
5. Připojení aplikací v PHP
Pro každou verzi PHP-FPM, kterou aplikace používá, nainstalujte odpovídající rozšíření Redis pro PHP:
apt -y install php8.1-redis php8.4-redis php8.5-redis
systemctl restart php8.1-fpm php8.4-fpm php8.5-fpm
php8.4 -m | grep -i redis
Konfigurace aplikace má používat hostitele 127.0.0.1, port 6379, prefix jedinečný pro aplikaci a prostředí a krátký časový limit připojení. Prefix brání tomu, aby si nesouvisející weby přepisovaly klíče v cache.
6. Ověření na VPS
redis-cli ping
redis-cli SET redis-guide:test "$(date -Is)" EX 60
redis-cli GET redis-guide:test
redis-cli INFO keyspace
redis-cli ACL LIST
První příkaz musí vrátit PONG. Dočasný testovací klíč vyprší po 60 sekundách. Chcete-li ho odstranit ručně, použijte redis-cli DEL redis-guide:test.
7. Provoz a kontrola při incidentech
systemctl is-active redis-server
redis-cli INFO memory
redis-cli INFO persistence
redis-cli SLOWLOG GET 10
journalctl -u redis-server -n 100 --no-pager
- Sledujte využití paměti, vytěsněné klíče, odmítnutá připojení a selhání perzistence.
- Redis restartujte až poté, co pochopíte dopad na cache, relace a aktivní fronty.
- Data Redisu zálohujte jen tehdy, když to zvolený režim perzistence smysluplně umožňuje.
- Instalujte bezpečnostní aktualizace Debianu a po aktualizacích Redisu otestujte chování aplikace.
Výsledek: soukromá, sledovaná instance Redisu dostupná jen aplikacím na tomto VPS.