Redis är en öppen källkod (BSD-licensierad), datastrukturlager i minnet, som används som databas-, cache- och meddelandeförmedlare. Det kan kombineras med andra databaser som MySQL för att tillhandahålla en mekanism för att cache dina frågor.
I den här artikeln visar vi hur man cachelagrar MySQL-frågorna som krävs för att rendera WordPress-sidor. Detta kommer att ge oss betydande prestandavinster, dock med vissa varningar.
Introduktion till bättre WordPress-cache
WordPress använder MySQL-databasen för att cachelagra interna applikationsobjekt (brödsmulor, menyalternativ, etc.) vilket kan vara dyrt att generera. Eftersom databasen också hanterar frågor för sidförfrågningar, är det möjligen den vanligaste flaskhalsen och orsakar ofta ökade laddningstider.
Redis tillhandahåller en cachningsmekanism som fungerar som ett alternativ till MySQL-databasen. Om en användare besöker en WordPress-sida serveras MySQL-frågorna som krävs för att generera sidan via Redis som cachar resultaten. Detta resulterar i blixtrande snabba laddningstider, jämförbara med statiska sidor.
Ett annat populärt cachningsval är Memcached. Redis gör dock nästan allt som Memcached gör så vi kommer att använda ScaleGrid hosting för Redis™* för den här handledningens skull.
Hur fungerar Redis Caching?
När en användare begär en WordPress-sida för första gången, utförs en MySQL-fråga på servern. Redis cachar den här frågan, så när en annan användare begär samma WordPress-sida tillhandahålls resultaten från Redis utan att behöva fråga databasen igen.
Om frågan inte är cachad i Redis, tillhandahålls resultaten av MySQL, som sedan läggs till i Redis-cachen.
Om ett visst värde uppdateras i databasen, ogiltigförklaras motsvarande Redis-värde för att förhindra att dålig cachedata visas för användaren.
Krav på handledning
Här är listan över tekniker som används i den här artikeln:
- 2 WordPress-installationer (med och utan plugin, för benchmarks)
- Redis™-server
- Redis WP Object Cache Plugin
WordPress-installation
Du kan ladda ner den senaste versionen av WordPress här och ställa in två olika installationer på en värd som Heroku eller AWS.
Redis Server
ScaleGrid ger stöd i världsklass för Redis™ Fristående och Master/Slave-kluster med förbättrade säkerhetsfunktioner. Vi kommer att använda ett fristående Redis™-kluster på ScaleGrid med cachingstrategin Allkeys-LRU, och du kan registrera dig för en gratis 30-dagars provperiod av vår värd för Redis™ för att hjälpa till med den här handledningen.
Redis WP Object Cache Plugin
Detta plugin används som en drop-in till din WordPress-installation och kan konfigureras för att använda Redis™-värden. Du hittar plugin-programmet här.
Inställningsanvisningar:Redis Object Cache för WordPress
Här är stegen för att installera Redis Object Cache Plugin på en WordPress-installation.
Steg 1:Installera Redis Cache-plugin
Denna handledning förutsätter att du redan har två nya installationer av WordPress inställda. På en av dem måste du installera Redis Object Cache-plugin. När plugin-programmet är installerat kan du aktivera det från plugin-menyn.
Steg 2:Hitta Redis i dina inställningar
När plugin-programmet har aktiverats kommer ett Redis-alternativ att visas under menyn Inställningar.
Steg 3:Lägg till WordPress-konfigurationer
Efter att ha ställt in plugin-programmet måste vi lägga till konfigurationsalternativ till WordPress-konfigurationsfilen. Som ett minimum skulle du behöva ställa in följande alternativ:
define('WP_REDIS_HOST', ''); define('WP_REDIS_PASSWORD', '');
Du kan hitta alternativen ovan på sidan ScaleGrid Cluster Details för Redis™.
Spara konfigurationen och aktivera objektcachen. Om autentiseringen är korrekt bör du se följande skärm:
Vid det här laget har Redis konfigurerats som en cache för din WordPress-installation.
Övervaka och felsöka WordPress-frågor
Alla Redis-kluster kommer installerade med Redis kommandoradsgränssnittsverktyg (redis-cli) som du kan använda för att övervaka inkommande frågeförfrågningar från WordPress. Här är en skärmdump av hur detta kan se ut:
Om du inte ser någon utdata på konsolen, gå till WordPress-webbplatsen och uppdatera.
WordPress &Redis-statistik att spåra
Det viktigaste måttet att spåra här är sidans laddningstid. Här är standardkonfigurationen vi använder för den nya installationen:
- WordPress:4.9.5
- Redis:v.4.0.2
- WordPress-tema:Twenty Seventeen
Baserat på en ny installation på ovanstående parametrar kan vi se nästan 50 % minskning av sidladdningstider:
- Utan Redis Object Cache =~900ms
- Med Redis Object Cache =~400ms
Redis Object Cache Nackdelar
Det finns några varningar för att använda Redis Object Cache-metoden på WordPress. Cachningsmekanismen fungerar inte bra om du har många plugins och teman installerade. Detta beror på att all deras data skulle behöva cachelagras med Redis.
Du kan också lära dig hur du cachelagrar tweets med Node.js, Redis och Socket.io i vår tidigare artikel.
Som alltid, om du bygger något fantastiskt, tweeta oss om det @scalegridio. Om du behöver hjälp med att hantera eller vara värd för MongoDB® Database eller Redis™, kontakta oss på [email protected].