Redis Challenge

Was ist Redis?
Redis ist eine sogenannte NoSQL Datenbank, wer da noch mehr Wissen will kann hier noch genauer nachlesen.

Datenbanken finde ich ja generell interessant allerdings wollte ich auch schon immer mal ein Client/Server Programm schreiben.

Die Interaktion zwischen Client und Server finde ich sehr interessant außerdem hab ich in den 4 Jahren die Programmierer bin noch nie so viel mit dem Datentyp object gearbeitet.
Die Challenge hat mir sehr gut gefallen weil ich bei fast jedem Teilproblem zumindest wusste was ich machen muss, für das wie hab ich meist noch ein paar Minuten mehr gebraucht.

Gerade hänge ich beim Problem Blocking Retrieval da werd ich aber erst nochmal bisschen grübeln müssen 😅.

Ich hab meine Implementierung natürlich auf meinem Github zur Verfügung gestellt.

Bisherige Learnings

  • Verbindung zwischen Client und Server

  • Was ist die Aufgabe eines Listeners

  • Verarbeitung des Redis RESP Protokolls

Update 15.04.26

11:00
Claude Code hat meinen Code überarbeitet und ein paar Schönheitsfehler korrigiert, an der eigentlichen Technik hat sich nichts geändert. Die Test von CodeCrafters schlagen aber weiterhin fehl. Ich glaube das mein Ansatz per DateTime zu ungenau ist und ich eher mit Events arbeiten muss.

12:35
Mein nächster Versuch arbeitet mit einer TaskCompletionSource, ich wusste das es das gibt aber hab bis jetzt noch nicht damit gearbeitet. Anstatt in festen Intervallen zu checken ob ein warte Vorgang abgelaufen ist starte ich jetzt beim hinzufügen der Clients einen separaten Thread der x Sekunden wartet und dann versucht den Vorgang abzubrechen.
Die Testcases sind alle erfolgreich durchgelaufen 😊.

Learnings

  • Zugriffsbeschränkung auf Ressourcen mit Lock wenn mehrere Threads zugreifen wollen

  • Statusverwaltung über mehrere Threads