Redis som (LRU) cache i WordPress

Redis er en lynrask in-memory key value store, og tilbyr datastrukturer som kan benyttes til en hel rekke ulike oppgaver, og er svært godt egnet til caching!

Den er raskere enn memcache, sikrere, og langt mer konfigurerbar.

For å benytte deg av redis trenger du en VPS, eller en dedikert server. Det er av sikkerhetsmessige årsaker ikke mulig å kjøre redis på et webhotell eller en TWS-konto.

Installere Redis på Ubuntu 18.04 LTS

apt update
apt install redis-server

Dette laster ned og installerer Redis på din server. Vi må nå konfigurere Redis til å oppføre seg slik vi vil:

vi /etc/redis/redis.conf

Du bør gjøre følgende endringer:

supervised

Denne står som default til no. Dette direktivet tillater deg å deklarere en init til å kontrollere Redis som en service, og gir større kontroll.

# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
# supervised no - no supervision interaction
# supervised upstart - signal upstart by putting Redis into SIGSTOP mode
# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
# supervised auto - detect upstart or systemd method based on
# UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
# They do not enable continuous liveness pings back to your supervisor.
supervised systemd

requirepass

Når du konfigurerer Redis med et passord må alle klienter autentiserer med et passord før de får tilgang til databasen. Det finnes ingen brukerstyring, så alle klienter må benytte det samme passordet. Det finnes heller ingen sikkerhetsmekanismer som hindrer brute-force angrep så passordet bør være sterkt!

################################## SECURITY ###################################

# Require clients to issue AUTH <PASSWORD> before processing any other
# commands. This might be useful in environments in which you do not trust
# others with access to the host running redis-server.
#
# This should stay commented out for backward compatibility and because most
# people do not need auth (e.g. they run their own servers).
#
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
requirepass q3Zmm^UuWh1apDEU77R^xpcIOGbLioB4bkKfPWH44D!axnXRJbYjR@rN$UfRK#2R

maxmemory-policy

Direktivet angir hva Redis sletter fra minnet/databasen når det ikke er mer ledig minne. I vårt tilfelle skal vi benytte allkeys-lru:

# LRU means Least Recently Used
# LFU means Least Frequently Used
maxmemory-policy allkeys-lru

maxmemory

Angir hvor mye minne Redis får bruke. Det finnes ikke noe godt svar på hva denne skal stå til. Her må du prøve deg fram, og se hvor mye minne Redis bruker over tid, men du bør sette en limit slik at Redis ikke får anledning til å bruke alt tilgjengelig minne.

############################## MEMORY MANAGEMENT ################################

# Set a memory usage limit to the specified amount of bytes.
# When the memory limit is reached Redis will try to remove keys
# according to the eviction policy selected (see maxmemory-policy).
...
# This option is usually useful when using Redis as an LRU or LFU cache, or to
# set a hard memory limit for an instance (using the 'noeviction' policy).
maxmemory 1gb

save

Redis lagrer som standard et snapshot av databasen til disk. Siden vi kun skal benytte Redis som cache kan vi med fordel skru av dette.

################################ SNAPSHOTTING ################################
#
# Save the DB on disk:
#
# save <seconds> <changes>
#
# Will save the DB if both the given number of seconds and the given
# number of write operations against the DB occurred.
#
# In the example below the behaviour will be to save:
# after 900 sec (15 min) if at least 1 key changed
# after 300 sec (5 min) if at least 10 keys changed
# after 60 sec if at least 10000 keys changed
#
# Note: you can disable saving completely by commenting out all "save" lines.
#
# It is also possible to remove all the previously configured save
# points by adding a save directive with a single empty string argument
# like in the following example:
#
save ""

#save 900 1
#save 300 10
#save 60 10000

Lagre konfigurasjonen, og start Redis på nytt:

systemctl restart redis.service

Ta i bruk Redis i WordPress

For å benytte Redis som cache i WordPress trenger du et php-interface:

apt install php-redis

Start Redis og Apache på nytt:

systemctl restart apache2

systemctl restart redis.service

I tillegg trenger du en WordPress-cache som er i stand til å snakke med Redis. Vi benytter, som vanlig W3 Total Cache, fordi den er mest konfigurerbar:

https://nb.wordpress.org/plugins/w3-total-cache/

Velg Performance > General Settings, enable Object Cache og trykk Save. Trykk deretter Object Cache i menyen, og oppgi passordet som du definerte i requirepass. I tillegg bør du skru av 

 

 

Har du flere spørsmål? Send oss en henvendelse