Voor jou getest - KeyDB: de multithreaded fork van Redis

Bij Hosted Power onderscheiden we ons door omgevingen te leveren met de allersnelste prestaties. Zo streven we er constant naar om de meest performante speler op de markt te blijven. 
Daardoor krijgt innovatie veel focus bij Hosted Power om op die manier onze processen en toolings die deze performante, kritische omgevingen voor uw websites en applicaties waarborgen, continu te blijven verbeteren.

Dit is typisch waar een technologie als Redis al snel in de schijnwerpers komt. Redis is een in-memory datastore die wordt gebruikt voor caching binnen onze omgevingen. Redis zorgt ervoor dat we snel gegevens kunnen openen en ophalen zonder dat we toegang tot de harde schijf nodig hebben, wat zorgt voor minimale responstijden.

De open source community is Redis al lange tijd onder druk aan het zetten om hun systeem echt multithreaded te maken, maar om redenen zoals programmeergemak en kosteneffectieve implementatie besloot Redis om hun architectuur met één thread te behouden.

Uiteraard kwam hier op termijn gevolg aan: er ontstonden multithreaded alternatieven voor het caching-systeem die ons bij Hosted Power triggerden om deze alternatieve technologieën te onderzoeken. Opvallend was dat sommige benchmarks prestaties lieten zien die 5 tot maar liefst 25 keer de resultaten haalden van Redis. Onze nieuwsgierigheid was met andere woorden aangewakkerd, dus zijn we beginnen testen.

Er is één alternatief dat het meest stabiel en compatibel uit de vergelijking blijkt te komen voor een professionele omgeving, namelijk KeyDB.

keydb

KeyDB is een multithreaded fork van Redis, wat betekent dat KeyDB volledig compatibel is met het Redis-protocol, de wijzigingen en haar modules, terwijl KeyDB belooft bij te blijven met de veranderingen die Redis in de toekomst zal doorvoeren. 

KeyDB is niet alleen multithreaded, de technologie heeft nog enkele unieke voordelen:

  • hogere prestaties met minder hardware
  • verkleining van de cluster grootte door actieve replicatie (dat wil zeggen dat 2 master-nodes zowel lees- als schrijfrechten accepteren)
  • de mogelijkheid om uw eigen commando te maken met ModJS 
  • veelbelovende interessante aankomende functies zoals FLASH-opslag, JSON-ondersteuning en multi-tenant support.

Dit klinkt allemaal veelbelovend, maar we vertrouwen nog steeds het meest op onze eigen testresultaten om deze verwachtingen te staven en deze delen we graag met jou.

KeyDB getest

Om de best mogelijke resultaten te genereren, hebben we een benchmarktool gebruikt die ontwikkeld is door RedisLabs , genaamd memtier_benchmark. Hiermee kunnen verschillende traffic patronen worden genereerd tegen Redis-instanties. Op deze manier konden we verschillende soorten scenario's nabootsen, variërend in het aantal clients en het aantal verzoeken dat door deze clients werd gegenereerd in verschillende configuraties, variërend van een 2xCPU/4GB RAM-configuratie tot een 8xCPU/32GB RAM-configuratie.

De resultaten stelden ons niet teleur! We zijn begonnen met testen binnen een omgeving van slechts 2 cores en 4GB werkgeheugen. Hier testten we 100 clients die elke 100, 1000 en 10 000 verzoeken genereerden.

2CPU4GBRAM
2CPU4GBRAM

Zoals het resultaat laat zien, presteert Redis veel beter dan KeyDB, terwijl de gemiddelde latency lager blijft. We hadden dit kunnen verwachten, aangezien KeyDB drastisch zou moeten verbeteren vanaf dat er meer threads worden toegewezen.

Het testen met 4 cores ondersteunt dan ook onze hypothese:

4cpu
4cpu

Vanaf 4 cores begint KeyDB beter te presteren dan Redis in alle metrieken. KeyDB voert 66% meer bewerkingen per seconde uit een heeft een hogere throughput van gegevens dan Redis. Zoals verwacht, kregen we nog een beter resultaat eens we de threads verhoogden naar zes.

6CPU
6CPU

KeyDB verdubbelt de waarde die Redis kan produceren in throughput van data en bewerkingen per seconde. Hier is een duidelijk patroon te zien. Om nogmaals de grote snelheidswinst te bevestigen, verhoogden we de threads naar 8 cores.

8CPU
8CPU

Tijd om een conclusie te trekken: KeyDB begint haar voordeel te tonen vanaf minimaal 4 cores, terwijl de meeste turnover werd gehaald met een opzet van 6 threads.

Latency is geen maatstaf die wordt meegegeven in de bovenstaande grafieken; maar werd wel geschetst in de testresultaten waaruit bleek dat KeyDB een lagere gemiddelde latency handhaaft.

De toekomst voor dit alternatief van Redis is veelbelovend en aangezien KeyDB nu al beter presteert dan een geoptimaliseerde setup van Redis, zullen wij ook kijken om KeyDB te implementeren in onze eigen TurboStack® setup. Elke feature die zorgt voor meer performantie, is er eentje dat ons triggert om jou als klant meer snelheid te garanderen op je kritische applicatie, shop of website.

Wil je meer weten over deze onderwerpen?