- Redis slaat gegevens op in het geheugen met geavanceerde structuren en atomaire bewerkingen.
- Ondersteunt persistentie (RDB/AOF), asynchrone replicatie en hulpmiddelen zoals Pub/Sub en Lua.
- Ideaal voor caching, sessies, berichten en ranglijsten met zeer lage latenties.
Als je ooit wilde dat je applicatie als een raket draaide, heb je waarschijnlijk wel eens van Redis gehoord. Deze technologie werkt als een in-memory datasysteem dat zeer lage latenties en bijna onmiddellijke reacties, ideaal wanneer snelheid de absolute prioriteit is.
Naast een 'cache' is Redis een NoSQL-database Een sleutel-waardeprogramma met meerdere datastructuren en ingebouwde tools. Oorspronkelijk uit 2009 en geschreven in C. De naam komt van Externe woordenboekserverTegenwoordig wordt het ondersteund door een zeer actief ecosysteem, clients voor vrijwel elke taal en robuuste persistentie- en replicatieopties.
Wat is Redis en waarvoor wordt het gebruikt?
Redis is een in-memory opslagengine die werkt met sleutel-waardeparen en geavanceerde structuren. Bij gebruik in RAM, vermindert typische knelpunten bij schijftoegangwaardoor het perfect is voor toepassingen waarbij extreme snelheid vereist is: zware querycaches, gebruikersessies, realtime berichten, online gaming, dashboards met streaminggegevens en meer.
In veel projecten wordt het gebruikt als cachelaag vóór traditionele databases, waarbij repetitieve resultaten worden opgeslagen om continue herberekening of herbevraging te voorkomen. Het wordt ook gebruikt als een database wanneer strikte duurzaamheid geen vereiste is, of persistentie is geconfigureerd om gegevens op schijf te beveiligen.
Dankzij de client/server-architectuur, netwerkinterface en het lichtgewicht ontwerp is het eenvoudig te implementeren en te verbinden vanaf meerdere hosts. Bovendien biedt asynchrone master-replica-replicatie (de master blijft functioneren tijdens het repliceren), wat helpt bij het schalen van leesbewerkingen en het verbeteren van de beschikbaarheid.
Belangrijkste functies
Het grote voordeel van Redis is dat alles in het hoofdgeheugen staat. Dit elimineert schijftoegang tijdens het kritieke pad en biedt extreem snelle lees-/schrijfbewerkingenDaarnaast kan elke string maximaal 512 MB groot zijn, met ondersteuning voor binaire gegevens, en zijn er structuren zoals lijsten, sets, gesorteerde sets, hashes, HyperLogLog, bitmaps en streams.
Redis implementeert atomaire bewerkingen op serverniveau op deze structuren. Dit stelt u in staat om verbindingen, intersecties of verschillen in sets uit te voeren, substrings te wijzigen of increment en decrement gehele getallen en drijvende komma's zonder racevoorwaarden.
Bevat hulpmiddelen die de ontwikkeling versnellen en veelvoorkomende patronen vereenvoudigen: Pub / Sub om berichten te plaatsen en je te abonneren op kanalen (geweldig voor realtime berichten en meldingen), toetsen met TTL voor automatische vervaldatum, atomaire tellers voor metrische gegevens en gelijktijdigheidscontrole, en ingebouwde ondersteuning voor scripts in Lua voor server-side logica sinds versie 2.6.
Een ander groot voordeel is de compatibiliteit met modules. Redis-modules breiden mogelijkheden uit zoals: JSON-documenten, tijdreeks of zoekopdrachtwaardoor het een veelzijdig systeem is dat veel verder gaat dan de simpele sleutel-waarde.

Geschiedenis, licenties en evolutie
Redis werd in 2009 opgericht door Salvatore Sanfilippo om de latentie van een product genaamd LLOGG te verbeteren. Het succes was onmiddellijk en in 2010 VMware huurde Sanfilippo in om het project op fulltimebasis te leiden.Kort daarna sloot Pieter Noordhuis zich aan. Tussen 2013 en 2015 werd hij gesponsord door Pivotal en later door Redis Labs.
Sinds versie 2.6 integreert de server een Lua-interpreter, die het mogelijk maakt om scripts in Redis zelf Met atomariteit en minimale client-server round-trip latentie. Qua licentie wordt het gedistribueerd volgens een dual-mode model. RSALv2 en SSPLv1.
Datamodel en bewerkingen
Redis onderhoudt een wereldwijd woordenboek dat sleutels aan waarden koppelt. In tegenstelling tot andere, eenvoudigere sleutel-waardeoplossingen, kunnen waarden van verschillende typen zijn. Het type bepaalt de beschikbare opdrachten en atomaire bewerkingen die je op die data kunt uitvoeren.
Het Redis String-type is "binair-veilig": het kan tekst, gehele getallen, floats of onbewerkte binaire data bevatten, zoals een JPEG-afbeelding of een geserialiseerd object. U kunt ermee werken delen van een string, specifieke bits wijzigen of gebruik het als een teller met verhogingen/verlagingen.
Met lijsten kunt u wachtrijen of stapels beheren, sets en geordende sets worden gebruikt voor lidmaatschap en rangschikking op basis van score, en hashes slaan veldwaarde-kaarten op, wat erg handig is voor groepskenmerken van een objectHyperLogLog wordt gebruikt voor benaderende kardinaliteitstellers met zeer lage geheugenvereisten, en streams faciliteren gebeurtenisstromen met groepsverbruik.
Bovendien biedt Redis transacties (MULTI/EXEC), waarmee u meerdere bewerkingen kunt groeperen, zodat worden sequentieel en atomair uitgevoerdIn combinatie met Lua kunt u complexe server-side logica met garanties inkapselen.
Persistentie: snapshots en AOF
Redis kan puur in het geheugen werken, maar ondersteunt ook schijfpersistentie om prestaties en duurzaamheid in evenwicht te brengen. Met snapshots (RDB) duurt het periodieke vastleggingen van de dataset en slaat ze asynchroon op, waardoor de impact op de responstijd zeer gering is.
De andere optie is AOF (journaling), waarbij elke schrijfbewerking naar een bestand wordt gelogd. Deze modus biedt een fijnmazigere en configureerbare duurzaamheid: appendfsync=altijd dwingt synchronisatie af bij elke verandering (maximale beveiliging, lagere prestaties), en appendfsync=elke seconde synchroniseert elke seconde (geweldige balans).
Indien nodig kunt u ook een GELD BESPAREN handmatig om op dat moment een momentopname te forceren. Bij een totale machinestoring is het gebruikelijk dat er, afhankelijk van het gekozen synchronisatiebeleid, maximaal een kleine hoeveelheid gegevens verloren gaat.
In oudere versies was het gebruik van "virtueel geheugen" toegestaan vanaf 2.4, maar die aanpak is verouderd. Tegenwoordig wordt aanbevolen om te kiezen tussen RDB, AOF of een combinatie daarvan, waarbij de configuratie wordt aangepast op basis van de criticaliteit van de gegevens en de gewenste prestaties.
Replicatie en hoge beschikbaarheid
Redis implementeert asynchrone master-replica-replicatie. Dit betekent dat schrijfbewerkingen op de master worden geaccepteerd en de replica's worden gesynchroniseerd zonder deze te blokkeren. de service operationeel houden tijdens synchronisatiesEen master kan meerdere replica's hebben. Een replica kan op zijn beurt als master aan een andere replica worden gekoppeld, waardoor een boomtopologie ontstaat.
Replicatie is erg handig voor schaal lezen en voor redundantie. Sommige configuraties staan schrijven naar replica's toe, hoewel dit tot inconsistenties kan leiden als het niet goed wordt beheerd; standaard worden replica's meestal alleen-lezen gebruikt om consistentie te behouden.
Door replica's dicht bij gebruikers te plaatsen, wordt de waargenomen latentie verminderd. Met orkestratietools en Sentinel/Cluster kan dit worden bereikt. hoge beschikbaarheid en automatische failover om de uitvaltijd als gevolg van masterfouten tot een minimum te beperken.
Client/serverarchitectuur en ecosysteem
De Redis-server maakt gebruik van een eenvoudig protocol waarmee clients van verschillende talen verbinding kunnen maken. U kunt ermee communiceren. Officiële CLI (redis-cli) voor testen, beheer of snelle scripts, of om een bibliotheek in uw applicatie te integreren.
Er zijn clients voor ActionScript, C, C++, C#, Java, Go, Python, PHP, Ruby, Scala, JavaScript (inclusief server-side Node.js), R, Erlang, Haskell, Lua, Objective-C, Perl, Common Lisp, Smalltalk, Tcl, Io, haXe, Pure Data en meer. Deze brede compatibiliteit vergemakkelijkt de adoptie in bijna elke stack.
Echte use cases en praktische voorbeelden
Een veelvoorkomend voorbeeld is dat van een online makelaarskantoor: de advertentie van een woning met de prijs, voorzieningen of kamers verandert nauwelijks. Zonder caching vereist elk bezoek herhaalde zoekopdrachten en berekeningen. Met Redis wordt het object na de eerste keer laden opgeslagen met een sleutel (bijvoorbeeld eigenschap_4056) en een TTL van bijvoorbeeld één maand. Volgende bezoeken worden uit het geheugen gelezen en vermijd het raken van de database.
Het komt ook vaak voor cache zware rapportresultaten, beheer geauthenticeerde sessies, bouw live ranglijsten met geordende sets of gebruik Pub/Sub als lichtgewicht berichtenkanaal tussen diensten.
In een test met een foutentabel van 16.000 rijen werd de tijd gemeten voor: 1) het raadplegen van de database, 2) het opslaan van de verzameling in Redis en 3) het lezen van Redis. De resultaten waren opvallend: Herstel van Redis was 26 keer sneller dan uit de database. Deze vergelijkingen openen vaak onze ogen voor de werkelijke impact op de gebruikerservaring en infrastructuurkosten.
Redis versus Memcached
Beide technologieën worden gebruikt voor in-memory caching, maar er zijn opvallende verschillen. Redis biedt meerdere gegevenstypen (lijsten, sets, hashes, enz.). optionele schijfpersistentie, Pub/Sub, Lua-scripts, transacties en modules om het bereik ervan uit te breiden. Memcached daarentegen richt zich op een eenvoudig, in-memory sleutel-waardemodel zonder persistentie.
Qua pure prestaties zijn beide erg snel; Redis blinkt doorgaans uit in scenario's met complexe structuren en atomaire server-side bewerkingen. Als u slechts een zeer eenvoudige, ultralichte cache nodig hebt, Memcached is mogelijk voldoende, maar als u op zoek bent naar meer functionaliteit en flexibiliteit, is Redis vaak de beste keuze.
Beheerde versus zelfbeheerde services (Redis en Valkey)
U kunt Redis of Valkey zelf implementeren of kiezen voor een beheerde cloudservice. Zelfbeheer geeft u volledige controle, maar Schaal en onderhoud zijn aan u (knooppunten, updates, beveiliging, back-ups en monitoring toevoegen).
Een beheerde service vermindert de operationele last: eenvoudigere schaalbaarheid, hoge beschikbaarheid en probleemloze updates. Dit vertaalt zich vaak in: lagere totale kosten en meer teamfocus in gegevensmodellering en bedrijfsfunctionaliteiten, in plaats van platformtaken.
Geïntegreerde tools: Pub/Sub, TTL, tellers en Lua
Met Pub/Sub kunt u berichten op kanalen uitzenden en meerdere abonnees deze direct laten ontvangen, wat perfect is voor chats, meldingen en coördinatie tussen microservices. Het is een eenvoudig en effectief patroon.
Met Time-to-live (TTL)-sleutels kunt u tijdelijke gegevens 'zelf opschonen': sessies, tokens, verlopende queryresultaten, enz. Dit je voorkomt dat de database wordt gevuld met verouderde informatie en de vervallogica vereenvoudigen.
Atomaire tellers zijn geweldig voor statistieken, snelheidsbeperkingen, wachtrijen of andere gevallen waarin u ze nodig hebt. veilig optellen/aftrekken in gelijktijdige omgevingen.
Ten slotte maakt de ingebouwde ondersteuning van Lua het mogelijk om scripts dicht bij de data en met atomariteit uit te voeren. Dit vermindert netwerkreizen en geeft u complexe bewerkingen in één stap, waardoor de consistentie en prestaties worden verbeterd.
Veel gestelde vragen
Waarvoor wordt Redis gebruikt? Om applicaties te versnellen met in-memory caches, sessies, realtime rankings, lichtgewicht berichten met Pub/Sub en als een NoSQL-database wanneer latentie een prioriteit is of persistentie is geconfigureerd.
Waarom is Redis zo snel? Omdat de gegevens zich in het RAM-geheugen bevinden, elimineert het de toegang tot schijven op het kritieke pad en biedt het atomaire server-side-bewerkingen; bovendien is het protocol licht en efficiënt.
Kan het gebruikt worden als database? Ja. Het is een in-memory NoSQL-database met persistentie-opties (RDB en AOF). Afhankelijk van uw configuratie kunt u: prioriteit geven aan prestaties of duurzaamheid en combineer beide.
Taalondersteuning
Er zijn volwassen clients voor vrijwel alles: Python (redis-py), Java (Jedis), Node.js (ioredis), C#/.NET (StackExchange.Redis), PHP (phpredis), Go (go-redis), Ruby (redis-rb) en nog veel meer. Deze variatie zorgt voor een directe integratie met uw stack feitelijke.
Redis heeft zich gevestigd als de 'wild card' voor het oplossen van prestatie- en realtimeproblemen in de meeste moderne architecturen: het combineert een duizelingwekkende snelheid, rijke datastructuren, configureerbare persistentie, replicatie en een reeks praktische tools die, wanneer ze goed worden gebruikt, Maak een verschil in de ervaring van uw gebruikers.
Inhoud
- Wat is Redis en waarvoor wordt het gebruikt?
- Belangrijkste functies
- Geschiedenis, licenties en evolutie
- Datamodel en bewerkingen
- Persistentie: snapshots en AOF
- Replicatie en hoge beschikbaarheid
- Client/serverarchitectuur en ecosysteem
- Echte use cases en praktische voorbeelden
- Redis versus Memcached
- Beheerde versus zelfbeheerde services (Redis en Valkey)
- Geïntegreerde tools: Pub/Sub, TTL, tellers en Lua
- Veel gestelde vragen
- Taalondersteuning