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