Redis Object Cache voor WordPress en Magento 2: Installatie en Beste Praktijken

Redis kan WordPress, WooCommerce en Magento merkbaar sneller maken, vooral voor pagina's die niet in de pagina-cache kunnen worden opgeslagen. Hier is hoe je het correct instelt en veelvoorkomende fouten voorkomt.

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.