Paginacaching maakt anonieme bezoeken snel. Maar veel verzoeken kunnen niet vanuit de pagina-cache worden bediend: ingelogde gebruikers, winkelwagentje, afrekenen, admin en zoeken. Voor die verzoeken doen PHP en de database het werk bij elk verzoek.
Redis is een in-memory datastore die precies deze verzoeken versnelt door database resultaten te cachen en sessies in het geheugen op te slaan. Deze gids laat zien hoe je het kunt instellen voor WordPress/WooCommerce en Magento 2.
Wat Redis doet in een webwinkel
| Gebruik | Wat het opslaat | Voordeel |
|---|---|---|
| Object cache (WordPress) | Resultaten van databasequery’s en berekende gegevens | Minder databasequery’s per verzoek |
| Standaardcache (Magento) | Configuratie, lay-out, blokken, collecties | Snellere paginageneratie |
| Pagina-cache (Magento, als er geen Varnish is) | Volledige pagina’s | Snellere anonieme pagina’s |
| Sessies | Gebruikerssessies | Sneller, werkt op meerdere webservers |
Installeer Redis
Op Ubuntu/Debian:
sudo apt install redis-server
sudo systemctl enable --now redis-server
redis-cli ping
Je zou PONG moeten zien. Installeer ook de PHP-extensie (bijvoorbeeld php8.3-redis) en herstart PHP-FPM.
Basis Redis-configuratie
In /etc/redis/redis.conf:
bind 127.0.0.1 ::1
protected-mode yes
maxmemory 512mb
maxmemory-policy allkeys-lru
- bind aan localhost (of een privé netwerk). Stel Redis nooit bloot aan het internet
- maxmemory beperkt het geheugenverbruik; stel het in op basis van uw gegevens
- allkeys-lru verwijdert de minst recent gebruikte sleutels wanneer het geheugen vol is, wat geschikt is voor een cache
Voor sessies betekent uitzetting dat gebruikers worden uitgelogd of hun winkelwagentje verliezen. Gebruik een apart Redis-instantie (of op zijn minst aparte geheugentoewijzing) voor sessies met een beleid dat actieve sessies niet onverwacht uitzet, zoals noeviction met voldoende geheugen, of volatile-lru als sessies vervaltijden hebben.
WordPress en WooCommerce
1. Installeer een object cache-plugin
De populaire Redis Object Cache plugin voegt een drop-in (wp-content/object-cache.php) toe die WordPress cache-aanroepen naar Redis stuurt. Sommige hosts bieden hun eigen integratie aan.
2. Configureer wp-config.php
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_DATABASE', 0 );
define( 'WP_REDIS_PREFIX', 'shop_' );
Gebruik een unieke prefix per site als meerdere sites één Redis-server delen.
3. Schakel het in
In de plugininstellingen, of met WP-CLI:
wp redis enable
wp redis status
4. Controleer het effect
Gebruik de Query Monitor-plugin om databasequery’s per verzoek te vergelijken voor en na. Winkelwagentje, afrekenen, account- en beheerderspagina’s zouden de grootste verbetering moeten tonen.
Magento 2
Magento ondersteunt Redis voor de standaardcache, pagina-cache en sessies, geconfigureerd met bin/magento setup:config:set.
Standaardcache
bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-server=127.0.0.1 --cache-backend-redis-port=6379 --cache-backend-redis-db=0
Pagina-cache (alleen als je Varnish niet gebruikt)
bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=127.0.0.1 --page-cache-redis-port=6379 --page-cache-redis-db=1
In productie is Varnish de aanbevolen full page cache (zie de Varnish voor Magento 2 gids).
Sessies
bin/magento setup:config:set --session-save=redis --session-save-redis-host=127.0.0.1 --session-save-redis-port=6380 --session-save-redis-db=0
Het voorbeeld gebruikt een tweede Redis-instantie op poort 6380 voor sessies. Op deze manier worden klanten nooit uitgelogd bij het legen van de cache.
Na het wijzigen van de configuratie:
bin/magento cache:flush
Meer commando’s in de Magento 2 commando’s spiekbriefje.
Beveiliging
- Bind aan localhost of alleen een privaat netwerk, en firewall poort 6379
- Stel een wachtwoord (
requirepass) in of ACL-gebruikers als Redis vanaf andere machines bereikbaar is. - Houd Redis up-to-date
- Voer Redis niet uit als root
Monitoring en probleemoplossing
redis-cli info memory
redis-cli info stats | grep -E "keyspace_hits|keyspace_misses|evicted_keys"
redis-cli --latency
- Hoge uitzettingen op de cache-instantie: verhoog
maxmemory - Uitzettingen op de sessie-instantie: klanten verliezen hun winkelwagentjes. Verhoog het geheugen of pas het beleid aan
- Laag hitpercentage: cache te vaak geleegd, of sleutels niet hergebruikt
- Verbindingsfouten: controleer of de Redis-extensie van PHP is geïnstalleerd voor de juiste PHP-versie
- Verouderde gegevens na implementatie: leeg de cache (niet de sessieopslag) als onderdeel van de implementatie
Veelgestelde vragen
Vervangt Redis paginacaching?
Nee. Pagina-caching (Varnish, CDN, plugin) levert complete pagina’s aan anonieme bezoekers. Redis versnelt de pagina’s die niet kunnen worden gecached. Gebruik beide.
Redis of Memcached?
Beide werken als objectcaches. Redis biedt persistentie-opties en meer datatypes, en is de gebruikelijke keuze voor Magento en veel WordPress-hosts.
Hoeveel geheugen heeft Redis nodig?
Het hangt af van de catalogusgrootte en het verkeer. Begin met een paar honderd megabytes voor een middelgrote winkel, houd het geheugen en de uitzettingen in de gaten en pas aan.
Wilt u de caching van uw winkel correct instellen?
Ik configureer Redis, Varnish en pagina-caching voor WordPress, WooCommerce en Magento winkels. Bekijk mijn servers en back-up service of vraag een prestatiebeoordeling aan.