Redis er et almindeligt valg, når en WordPress-shop skal have et vedvarende object cache: et lager i hukommelsen, hvor WordPress gemmer resultaterne af databaseforespørgsler mellem sidevisninger. Det hjælper netop på de sider, en sidecache ikke kan tage, som kurv, checkout, “Min konto” og admin.
Her gennemgår vi opsætningen trin for trin med pluginet Redis Object Cache, hvad du skal have styr på, hvis flere sites deler den samme Redis, og hvordan du tjekker, at det virker.
Hvad Redis gør for en WooCommerce-shop
Uden et vedvarende object cache husker WordPress kun resultaterne af databaseforespørgsler, mens én side bygges. Næste sidevisning spørger databasen om det samme igen. Med Redis bliver resultaterne liggende i hukommelsen, så produktdata, indstillinger og meget andet kan hentes derfra i stedet.
Redis er ikke en sidecache. Det gør ikke de sider, der allerede kommer fra sidecachen, hurtigere, men det gør de sider, der skal bygges hver gang, hurtigere at bygge. Hvordan de forskellige slags cache spiller sammen i en webshop, står i vores guide til caching i WooCommerce.
Det skal du bruge
- En Redis-server: Mange hostingudbydere tilbyder Redis, nogle som en tilføjelse til abonnementet. Spørg din udbyder, og få adressen (eller socket), porten og en eventuel adgangskode. Har du din egen server, skal Redis installeres og sikres, så den ikke er tilgængelig udefra.
- PHP-udvidelsen til Redis: Pluginet kan bruge udvidelsen PhpRedis eller et bibliotek i ren PHP. Udvidelsen er det hurtigste. Spørg din udbyder, om den er installeret.
- Et plugin: Her bruger vi det gratis Redis Object Cache fra WordPress’ pluginkatalog. Der findes andre, også betalte. Vi har sammenlignet flere af dem i vores test af object cache-plugins til WooCommerce (på engelsk).
Opsætning trin for trin
Prøv det på en kopi af shoppen først. Gå derefter igennem de samme trin på den rigtige shop.
1. Indstillinger i wp-config.php. Tilføj forbindelsesoplysningerne over linjen, der siger, at du skal stoppe med at redigere. Ret værdierne til dem, din hostingudbyder har givet dig:
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_PASSWORD', 'adgangskoden' ); // kun hvis Redis kræver en
define( 'WP_REDIS_DATABASE', 0 );
define( 'WP_REDIS_PREFIX', 'minshop_' );2. Installér pluginet. Installér og aktivér Redis Object Cache under Plugins → Tilføj nyt.
3. Slå object cache til. Gå til Indstillinger → Redis, og klik på knappen, der slår object cache til. Pluginet lægger så filen object-cache.php i wp-content. Det er den fil, WordPress bruger til at tale med Redis. Med WP-CLI gør wp redis enable det samme.
4. Tjek status. På samme side skal status vise, at pluginet er forbundet, og at drop-in-filen er gyldig. Under Værktøjer → Webstedets tilstand forsvinder anbefalingen om at bruge et vedvarende object cache.
Flere sites på samme Redis
Deler flere sites den samme Redis-server, skal hvert site have sit eget prefix eller sin egen database. Ellers kan de læse hinandens data. Det gælder også kopien af shoppen: Har kopien og den rigtige shop samme prefix og database, kan indstillinger og produktdata fra kopien dukke op i den rigtige shop, og omvendt. Ret WP_REDIS_PREFIX eller WP_REDIS_DATABASE, hver gang du laver en kopi.
Hukommelse: hvad sker der, når Redis er fuld?
Redis kan få en grænse for, hvor meget hukommelse den må bruge, og har en regel for, hvad der sker, når den er nået. Standardreglen i Redis’ konfiguration (på engelsk) hedder noeviction: Redis afviser nye data, når grænsen er nået, og så kan WordPress ikke gemme i cachen. Til et object cache skal reglen i stedet være, at de ældste eller mindst brugte data smides ud, fx med indstillingen maxmemory-policy allkeys-lru. Hos en hostingudbyder er det typisk sat op for dig. Spørg, hvis du er i tvivl.
Store autoloadede indstillinger fylder også i Redis og skal hentes på hver sidevisning. Hvordan du finder og rydder op i dem, står i vores guide til autoload i wp_options.
Virker det?
Pluginets statusside viser, om forbindelsen er i orden. Om cachen faktisk bliver brugt, kan du se med Query Monitor: oversigten viser object cachens hit rate, altså hvor stor en del af opslagene der kom fra Redis. Den skal være høj, når du klikker rundt i shoppen. Sammenlign derefter tiden på kurv, checkout og en tung side i admin med tiden fra før. Hvor object cachen passer ind i fejlfindingen af en langsom shop, står i afsnittet om cache i fejlfindingsguiden.
Når noget går galt
- Gamle data efter en ændring direkte i databasen: Ændringer, der laves uden om WordPress, fx en import direkte i databasen eller en flytning af sitet, når ikke cachen. Tøm cachen bagefter fra pluginets side eller med
wp cache flush. - Ingen forbindelse: Tjek adresse, port og adgangskode, og spørg din udbyder, om Redis kører.
- Du vil slå det fra igen: Slå object cache fra på pluginets side, eller fjern
object-cache.phpfrawp-content. Så bruger WordPress databasen som før.
Ofte stillede spørgsmål
Redis eller Memcached?
Begge kan bruges som object cache i WordPress. Redis er det, mange hostingudbydere tilbyder, og som de fleste object cache-plugins understøtter. Brug det, du kan få hos din udbyder.
Kan Redis gøre shoppen langsommere?
Det kan ske, hvis Redis ligger på en anden server langt væk, så hvert opslag tager længere tid end at spørge databasen. Redis skal ligge tæt på webserveren, helst på samme maskine eller i samme datacenter.
Vil du have hjælp?
Redis er sjældent svært at slå til, men det er nemt at overse prefix, hukommelse og kopier af shoppen. Vil du have, at vi sætter det op eller tjekker din opsætning, så læs om optimering af din WooCommerce-shop. Vi kigger gratis på din shop først og siger, hvad der skal til.