Redis cache bij Vevida
Jan Reilink

Binnen onze WordPress hosting-omgeving op Linux kun je gebruikmaken van Redis als in-memory cache-oplossing, als dit is aangezet voor jouw website. Handig, maar wat is Redis nou precies? We vertellen je er graag meer over.

Redis Cache

Redis is een in-memory datastructuur-opslaglocatie, vaak gebruikt als database of cache. Je kunt in Redis stukjes PHP-data, of objecten, opslaan. Hierdoor hoeft je website niet alle dynamisch gegenereerde gegevens opnieuw te berekenen of uit de database op te halen. Het resultaat kan simpelweg uit deze cache-opslag gehaald worden. Hierdoor laadt je website stukken sneller.

Omdat niets wat gecachet wordt op disk wordt opgeslagen, maar in het RAM-geheugen, is Redis een snelle cache-opslaglocatie. Evenals bijvoorbeeld PHP OPcache.

In de meest simpele vorm gebruikt Redis een key-value opslag, om data met paren van een ‘key’ met bijbehorende ‘value’ in op te slaan. Vaak ook een NoSql database genoemd. De essentie van deze key-value opslag is dus dat je een stukje data opslaat, genaamd een value, binnen een key. Die data kan er alleen uitgehaald worden als je de exacte key kent. In WordPress gebruik je Redis veelal als object cache, en hiervoor gebruik je WordPress’ WP_Object_Cache class.

In onze hostingomgeving kun je Redis benaderen via een socket-verbinding. Een heel versimpelde weergave van object cachen met Redis is:

<?php
define( 'REDIS_PATH', '/tmp/redis.sock' );

$redis = new Redis();
$redis->connect( REDIS_PATH );

if( $redis->exists('foo') ) {
    /**
     * key 'foo' bestaat, haal de waarde op
     */
    if( $redis->get('foo') ) {
        echo "De waarde is " . $redis->get('foo');
    }
}
else {
    /**
     * key 'foo' bestaat nog niet, maak deze aan met waarde 'bar'
     */
    $redis->set('foo', 'bar');
}
?>

In dit voorbeeld maakt PHP verbinding met Redis via een UNIX socket. Door middel van $redis->exists wordt gekeken of de key ‘foo’ bestaat, en haalt $redis->get de waarde op als dat zo is. Bestaat de key ‘foo’ niet, dan wordt deze door $redis->set gemaakt met value ‘bar’.

Waarom Redis Cache?

Redis heeft een aantal mooie voordelen:

  • De cache wordt op één plek opgeslagen, in het RAM-geheugen van de webserver. Hierdoor hoef je ook maar één cache te flushen.
  • WordPress plugins kunnen Redis Cache automatisch “flushen” tijdens het posten van een bericht. Hierdoor zie je altijd keurig het net geplaatste bericht staan. Je vindt een voorbeeld in ons FAQ-artikel Flush PHP Redis cache na het publiceren van een post in WordPress.
  • Redis is vaak sneller dan Memcached (een alternatieve key-value store)
  • Sessies kunnen worden opgeslagen in de cache en niet in de database.
  • Backend wordt sneller.
  • Hierdoor ideaal voor WooCommerce webshops!

WordPress heeft veel voordeel van een key-value cache als Redis. Zoals uitgelegd is het véél sneller om gegevens uit het RAM-geheugen op te halen dan uit een MariaDB- of MySQL-database. Een nadeel kan zijn dat WordPress updates soms falen door PHP caches. Maar in dit gelinkte artikel vind je al direct de oplossing ervoor.

Ook andere PHP-applicaties zoals Laravel, Drupal, of Joomla hebben veel baat bij Redis als object cache back-end.

In WordPress kun je een aantal plugins gebruiken ten behoeve van Redis. Wij hebben er drie getest: WP Redis door Pantheon, Redis Page Cache door PressJitsu en Redis Object Cache door Till Krüss:

De plugins hebben een handmatige configuratie nodig. Je leest hier alles over in ons FAQ-artikel “Hoe stel ik WordPress in om gebruik te maken van Redis?“.

Andere plugins zijn beschikbaar: https://nl.wordpress.org/plugins/search/redis+cache/

Kom je er niet uit, neem dan gerust contact op met onze WordPress experts.

“Voor wie is Redis Cache geschikt?”, vraag je je wellicht af. Voor jou! Als het van belang is dat jouw website snel getoond wordt aan bezoekers, maar óók snel is in het backend, activeer dan Redis Cache voor WordPress en PHP. Neem hiervoor contact op met onze klantenservice.

Tip: je kunt Redis ook gebruiken als opslaglocatie voor jouw PHP-sessies! Neem hiervoor op in een php.user.ini-bestand:

session.save_handler = "redis"
session.save_path = 'unix:///tmp/redis.sock'

Let op: bovenstaande werkt alleen als wij Redis voor je hebben aangezet.

Heb je hierover vragen, of ondervind je problemen met WordPress en Redis, neem dan gerust contact op met onze WordPress experts.

Jan Reilink Systeembeheerder

Jan Reilink is ruim 10 jaar in dienst bij Vevida als systeembeheerder. Zijn specialiteiten zijn Windows Server, IIS, PHP, websites, optimalisatie en beveiliging. Daarnaast houdt Jan al jaren een technisch blog saotn.org bij met nieuws en artikelen over deze onderwerpen.