Redis + Drupal @ Byte webhosting
For Amsterdam based hosting provider Byte I've written a short dutch tutorial on how to configure Redis cache on a Drupal 7 site on their hosting platform. Below the gist:
---
Hosting provider Byte heeft sinds kort een cache service in beta draaien. Deze service, Redis, serveert cache direct uit geheugen en is daarom veel sneller dan de Drupal native file cache of database cache methodes. Redis is te vergelijken met andere cache backends zoals memcache of apc.
Installeren en configureren van Redis op een Drupal 7 site is een fluitje van een cent. Als je de onderstaande stappen volgt ben je binnen no time aan de slag met Redis en kun je een flinke snelheidswinst verwachten voor gecachte requests. Een snelle benchmark leverde ruwweg 20% performance winst op voor anonieme bezoekers. Als je specifieke onderdelen binnen Drupal gericht gaat cachen kun je ook voor ingelogde gebruikers betere resultaten behalen.
Hieronder een kort stappenplan om Redis op je Drupal 7 installatie bij Byte aan de gang te krijgen.
- download de redis module https://drupal.org/project/redis en plaats hem in je Drupal directory. Ik geef de voorkeur aan /sites/all/modules/contrib/redis (als je hem ergens anders plaatst, pas dan ook de paden in de settings file aan).
- als je bij Byte een redis pakket afneemt, dan krijg je een servernaam, poort en wachtwoord. Noteer deze voor de configuratie. De gegevens kun je vinden op de redis pagina in je Byte control panel.
- bewerk de settings.php van de site waarvoor je redis caching wilt inschakelen. Meestal is dat /sites/default/settings.php
- Voeg onderin je settings.php de volgende regels toe:
/**
* Redis module configuration
*/
$conf['redis_client_interface'] = 'PhpRedis';
$conf['cache_backends'][] = 'sites/all/modules/contrib/redis/redis.autoload.inc'; // Neem de installatie-directory van je redis module.
$conf['cache_class_cache'] = 'Redis_Cache';
$conf['cache_class_cache_menu'] = 'Redis_Cache';
$conf['cache_class_cache_bootstrap'] = 'Redis_Cache';
$conf['lock_inc'] = 'sites/all/modules/contrib/redis/redis.lock.inc'; // Neem de installatie-directory van je redis module.
$conf['redis_client_host'] = 'cache012345'; // Vul hier de servernaam in uit stap 2.
$conf['redis_client_port'] = 12345; // Vul hier de poort in uit stap 2
$conf['redis_client_base'] = 0; // Eventueel 1, afhankelijk van de redis cache db die je wilt gebruiken. Byte levert 2 redis databases.
$conf['redis_client_password'] = "*******************"; // Vul hier het wachtwoord in uit stap 2.
$conf['cache_prefix']['default'] = '******'; // Vul hier een prefix voor je site in als je meerdere sites op 1 cache db wilt draaien.
Opmerkingen:
- Controleer de werking van de module op de redis pagina in het Byte control panel, in de status rapportage van je site: http://jouwsite.nl/admin/reports/status
- Leeg, voor de zekerheid, na installatie van redis de cache van je site een keer. Zeker als je andere cache-methodes hebt gebruikt
- Raadpleeg de README.txt en README.PhpRedis.txt in de module directory voor meer configuratieopties
- Inschakelen van de module is niet strikt noodzakelijk voor de werking ervan
- Als je de module wel inschakelt is er een configuratiepagina te vinden op de url http://jouwsite.nl/admin/config/development/performance/redis
- Let op: bovenstaande configuratiepagina doet niets omdat we in de tutorial hierboven de configuratie-settings forceren in de settings.php
- De redis cache is effectiever naarmate je meer elementen van je Drupal site cachet. Bijvoorbeeld: entitycache, authcache, views_content_cache, panels_page_cache, panels_hash_cache en cache_actions.
- Raadpleeg voor meer cache opties ook de Drupal documentatie: https://drupal.org/node/326504
- Let op: verschillende cache opties kunnen met elkaar conflicteren. Bijv: installeren van zowel memcache als redis is onzinnig.
- Let op: caching levert performance winst op maar maakt zaken als site configuratie, redactie, per-user content en testen al snel gecompliceerd omdat je snel over het hoofd kunt zien dat je met een gecachete pagina te maken hebt in plaats van een "verse" pagina.