Redis
Redis instanties instellen met Hipex Deploy
Introductie
Veel applicaties gebruiken Redis voor hun caching behoeften. Hierdoor adviseren wij om de Redis configuratie als code te behandelen en deze op te nemen als onderdeel van de codebase. In dit artikel leggen we je uit hoe je dit instelt.
Configuratie
Het instellen van een Redis instantie is net zo makkelijk als het toevoegen van een service aan je configuratie:
$redis = new RedisService('cache', 7000);
$redis->setMaxMemory('4096M');
$configuration->addPlatformService($redis);
Wanneer je applicatie nu wordt uitgerold, zorgt het er automatisch voor dat de Redis instantie op poort 7000 met 4GB geheugen wordt gedraaid.
Net zoals een andere taak of service kan je Redis voor een specifieke stage of server role configureren.
$redis = new RedisService('cache', 7000);
$redis->setStage($stage);
$redis->setServerRoles([ServerRole::APPLICATION]);
Master / Slave setup
Met een cluster setup draai je gewoonlijk een Redis-instantie als master op de load balancer en zal elke applicatie server een eigen redis instantie krijgen.
$redisMaster = new RedisService('cache', 7000);
$redisMaster->setServerRoles([ServerRole::LOAD_BALANCER]);
$redisSlave = new RedisService('cache', 7000);
$redisSlave->setServerRoles([ServerRole::APPLICATION]);
$redisSlave->setMasterServer('production123.hipex.io');
De Redis instanties op de servers met role ServerRole::APPLICATION
zullen geconfigureerd worden als slaves van de redis instantie op production123.hipex.io
.
Persistentie
Als je Redis voor sessies gebruikt, wat wij overigens adviseren, dan is het van tijd tot tijd aan te raden om sessies op een schijf op te slaan.
Dit kan eenvoudig worden geconfigureerd middels setSnapshotSaveFrequency(frequencyInSeconds)
.
$redis = new RedisService('cache', 7000);
$redis->setSnapshotSaveFrequency(60);
Dit zal ervoor zorgen dat de Redis database iedere 60 seconde wordt opgeslagen op de schijf.