Redis gebruiken in WordPress
Wat is Redis?
Redis is een 'in-memory' key-value data opslag service. Simpel gezegd, Redis is een data opslag systeem welke extreem goed in het opslaan data in RAM waarvan je al weet wat het is en wanneer je het nodig hebt. Redis wordt vaak gebruikt als database cache en wij krijgen de meeste vragen over Redis in deze hoedanigheid.
Voorwaarden om Redis te kunnen gebruiken icm WordPress
Om Redis te kunnen gebruiken in combinatie met Wordpress moeten je aan een aantal voorwaarden voldoen:
- Er moet een Redis server actief zijn om mee te kunnen verbinden. (Hoasted biedt geen Redis servers aan binnen hosting pakketten)
- De Redis module moet ingeladen zijn in PHP.
- WordPress heeft een plugin actief om verbinding te maken met de Redis server en data op te slaan of in te laden.
Het is belangrijk om hier te zien dat er een Redis server actief moet zijn om gebruik te maken van Redis binnen WordPress. Je kunt de PHP module activeren en een plugin installeren in WordPress maar zonder de onderliggende server om verbinding mee te maken heeft dit geen effect.
Hoe werkt Redis in combinatie met WordPress?
In veel handleiding wordt Redis vaak aanbevolen om de snelheid van je WordPress site te verhogen. Er zijn absoluut situaties waarin Redis een toegevoegde waarde kan zijn voor de performance maar er zijn ook genoeg situaties waar Redis je website langzamer maakt. Om dit goed in te kunnen schatten is het goed om de werking van Redis te begrijpen. Zie hieronder de verschillende scenario's:
A. WordPress (Basis)
- Webpagina wordt opgevraagd door de browser
- De webserver accepteert het verzoek. (Litespeed)
- De webserver start een PHP process met de geactiveerde modules.
- De PHP bestanden worden ingeladen en uitgevoerd.
- Er wordt een verbinding met de MySQL server gelegd en de queries worden uitgevoerd.
- PHP verwerkt de queries en genereert de HTML.
- De HTML output wordt teruggestuurd naar de browser.
B. WordPress met Redis Page cache
- Webpagina wordt opgevraagd door de browser
- De webserver accepteert het verzoek. (Litespeed)
- De webserver start een PHP process met de geactiveerde modules.
- De PHP bestanden worden ingeladen en gedeeltelijk uitgevoerd.
- De Redis Page cache plugin bekijkt of er een complete HTML pagina in de Redis server is opgeslagen voor de url. Als dit het geval is wordt de HTML output teruggestuurd naar de browser, de volgende stappen worden overgeslagen. Mocht dit niet het geval zijn dan worden de volgende stappen uitgevoerd:
- Er wordt een verbinding met de MySQL server gelegd en de queries worden uitgevoerd.
- PHP verwerkt de queries en genereert de HTML.
- De HTML wordt opgeslagen in de Redis server.
- De HTML output wordt teruggestuurd naar de browser.
C. WordPress met Redis Object cache
- Webpagina wordt opgevraagd door de browser
- De webserver accepteert het verzoek. (Litespeed)
- De webserver start een PHP process met de geactiveerde modules.
- De PHP bestanden worden ingeladen en uitgevoerd.
- De Redis Object cache plugin bekijkt voor iedere query die naar de MySQL server gestuurd wordt of er al een resultaat is in de Redis server voor deze query. Als dit het geval is wordt de output teruggestuurd naar PHP vanuit Redis, mocht er geen resultaat zijn dan wordt de query doorgelaten naar de MySQL server.
- Er wordt een verbinding met de MySQL server gelegd en de queries worden uitgevoerd.
- De queries die opgehaald zijn bij de MySQL server worden in Redis opgeslagen.
- PHP verwerkt de queries uit MySQL en Redis en genereert de HTML.
- De HTML output wordt teruggestuurd naar de browser.
D. WordPress met Litespeed cache
- Webpagina wordt opgevraagd door de browser
- De webserver accepteert het verzoek. (Litespeed)
- Litespeed bekijkt of er voor de url al een pagina in cache zit, is dit het geval dan wordt de HTML naar de browser teruggestuurd en komen alle volgende stappen te vervallen.
- De webserver start een PHP process met de geactiveerde modules.
- De PHP bestanden worden ingeladen en uitgevoerd.
- Er wordt een verbinding met de MySQL server gelegd en de queries worden uitgevoerd.
- PHP verwerkt de queries en genereert de HTML.
- De HTML output wordt teruggestuurd naar de browser, in dit proces plaatst Litespeed de HTML in de cache.
Wanneer gebruik je wat?
Wij zien dat voor 99% van de WordPress websites 'WordPress met Litespeed cache' de beste resultaten opleveren. De 'extra' stappen die toegevoegd worden zijn minimaal, iedere extra 'check', 'verbinding', 'module' of plugin zorgt namelijk voor extra vertraging in de laadtijd. Bij WordPress met Litespeed cache worden er geen gecompliceerde checks uitgevoerd op iedere query maar wordt er één extra check uitgevoerd. Als de pagina in cache zit dan worden er vele stappen direct overgeslagen, die veel tijd besparen.
Ons advies is dan ook om gebruik te maken van deze optie, zoals aangegeven is dit voor 99% van de websites de beste optie.
WordPress met Redis Page cache raden wij volledig af, deze methode is langzaam en kan beter uitgevoerd worden door de webserver zoals Litespeed. Mocht je geen gebruik maken van Litespeed dan kan deze functie beter afgehandeld worden door bijvoorbeeld, W3 Total Cache of WP-Rocket.
WordPress met Redis Object cache kan interessant zijn in de volgende situatie:
- Page cache is geen optie.
- Database queries zijn de bottleneck in je performance.
- Er zit veel overlap in je queries, cache werkt alleen als de query hetzelfde is, voor iedere unieke query wordt er namelijk een nieuw cache item aangemaakt.