Redis is een op geheugen gebaseerde key-value opslag die wordt gebruikt in verschillende omgevingen waar snelle gegevensverwerking vereist is. Het wordt voornamelijk gebruikt voor caching, taakqueues en sessiebeheer en kan worden gebruikt als permanente datastorage door een gegevensbewaringsfunctionaliteit toe te voegen. In deze eerste post zullen we de basisconcepten van Redis en het belangrijke configuratiebestand redis.conf verkennen.

1. Basisconcepten en kenmerken van Redis

Redis is een NoSQL-database die gegevens opslaat in geheugen (RAM) en daardoor hoge snelheden biedt. Dankzij deze kenmerken wordt het veel gebruikt voor de volgende doeleinden.

  • Cache: Om de gegevensreactietijd van webapplicaties te versnellen worden vaak opgevraagde gegevens in Redis opgeslagen voor snelle toegang.
  • Sessiestorage: Gebruikerssessie-informatie wordt opgeslagen voor snelle toegang en sessiegegevensbeheer.
  • Taakqueue: Een asynchrone taakqueue die samen met bibliotheken zoals Celery taken kan plannen en snel kan verwerken.
Infographic met de belangrijkste concepten van Redis

Belangrijkste voordelen van Redis

  • Snelheid: Door gegevens in het geheugen op te slaan kan Redis snel lezen en schrijven, wat de reactietijd minimaliseert.
  • Ondersteuning voor verschillende datastructuren: Naast een eenvoudige key-value opslag ondersteunt Redis ook lijsten, sets, hashmaps en meer.
  • Schaalbaarheid: Door het opzetten van een cluster kan de gegevensopslagcapaciteit en verwerkingsprestatie worden uitgebreid.

Volatiliteit van Redis en opties voor gegevensbewaring

Standaard is Redis ontworpen om met vluchtige gegevens om te gaan, waardoor opgeslagen gegevens in het geheugen kunnen verdwijnen wanneer de server opnieuw wordt opgestart. Ter compensatie biedt Redis twee opties voor gegevensbewaring.

  • RDB (Redis Database) snapshots: Gegevens in het geheugen worden op regelmatige basis als snapshots op de schijf opgeslagen.
  • AOF (Append-Only File): Alle schrijfwerkzaamheden worden op de schijf geregistreerd, zodat gegevens kunnen worden hersteld na een serverherstart.

Als Redis alleen voor cache wordt gebruikt, hoeft men zich normaliter geen zorgen te maken over gegevensvolatiliteit, maar voor permanente gegevensbewaring kunnen deze opties worden gebruikt.

2. Redis-configuratiebestand (redis.conf)

Het belangrijke configuratiebestand van Redis, redis.conf, biedt gedetailleerde instellingen voor de werking van de Redis-server. Het bevindt zich meestal op /etc/redis/redis.conf en wordt automatisch aangemaakt tijdens de installatie van Redis.

Belangrijke configuratie-instellingen in redis.conf

Diagram van de structuur van het Redis-configuratiebestand
1) Netwerkinstellingen
  • port: Stelt de poort in die door de Redis-server wordt gebruikt. De standaardpoort is 6379.
port 6379
  • bind: Bepaalt het IP-adres dat door de Redis-server wordt geaccepteerd. Standaard staat 127.0.0.1 alleen lokale verbindingen toe.
bind 127.0.0.1
2) Beveiligingsinstellingen
  • requirepass: Stelt een wachtwoord in dat nodig is voor toegang tot de Redis-server. Wordt weggelaten, dan kan men zonder wachtwoord inloggen.
requirepass yourpassword
  • protected-mode: Een modus die Redis beschermt tegen externe toegang, standaard ingesteld op yes en alleen lokale verbindingen toestaat.
3) Geheugenbeheer
  • maxmemory: Stelt de maximale hoeveelheid geheugen in die Redis mag gebruiken. Als er geen beperking is, wordt het systeemgeheugen in zijn geheel gebruikt.
maxmemory 256mb
  • maxmemory-policy: Beleid dat bepaalt welke gegevens er worden verwijderd als het geheugen vol is. allkeys-lru verwijdert de data die het langst niet zijn gebruikt.
maxmemory-policy allkeys-lru
4) Instellingen voor gegevensbewaring
  • save: Genereert regelmatige snapshots van de RDB en slaat deze op de schijf op. Bijvoorbeeld, de volgende instelling genereert een snapshot als meer dan 1000 sleutels binnen 60 seconden zijn gewijzigd.
save 60 1000
  • appendonly: Activeert de AOF-modus om de gegevensbewaringsgraad te verhogen. Als ingesteld op yes worden alle schrijfwerkzaamheden in het AOF-bestand geregistreerd.
appendonly yes
5) Logging en debuginstellingen
  • loglevel: Stelt het niveau van logging in. notice registreert alleen algemene berichten, terwijl debug alle debug-informatie vastlegt.
loglevel notice
  • logfile: Specificeert het pad naar het logbestand. De standaardwaarde is stdout, wat betekent dat er geen aparte bestanden worden aangemaakt.
logfile /var/log/redis/redis.log

3. Toepassen van wijzigingen in de Redis-configuratie

Na het wijzigen van gewenste opties in het configuratiebestand kan de Redis-server worden herstart om de instellingen toe te passen.

sudo systemctl restart redis-server

Om te controleren of Redis correct functioneert na de wijziging, kan de volgende opdracht worden gebruikt.

redis-cli ping

Een PONG terug betekent dat de Redis-server correct werkt.

Conclusie

We hebben de basisconcepten van Redis en de belangrijkste items van het configuratiebestand besproken. Redis biedt instellingen die kunnen worden afgestemd voor prestaties en gegevensbewaring, dus het is belangrijk om de configuratie te optimaliseren op basis van gebruiksdoelen. In de volgende post zullen we dieper ingaan op de gegevensbewaringsopties van Redis, namelijk RDB en AOF.