Redis
 sql >> Datenbank >  >> NoSQL >> Redis

redis für die Protokollierung

Sie müssen bedenken, dass Redis eine In-Memory-Datenbank ist (auch wenn sie die Daten auf der Festplatte speichern kann). Die Daten, die Sie in Redis eingeben, müssen in den Speicher passen.

Der Vorschlag in dem von Ihnen erwähnten Artikel bezieht sich auf die Verwendung von Redis als verteiltes Warteschlangensystem. Worker-Prozesse nehmen die Elemente aus der Warteschlange und schreiben sie auf die Festplatte, sodass sich nicht so viele Elemente im Redis-Speicher befinden. Dieses Design hat einen Fehler:Wenn die Worker-Prozesse die Daten nicht schnell genug auf die Festplatte schreiben können, wird der Redis-Speicherverbrauch explodieren – also muss er durch Konfiguration (Redis-Maxmemory-Parameter) oder Software begrenzt werden (die Warteschlange beim Einfügen kürzen oder leeren die Warteschlange, wenn sie voll ist).

Jetzt funktioniert Ihr Vorschlag nicht wirklich, da alle Daten, die Sie in Redis schreiben, im Speicher bleiben (auch wenn sie von Redis selbst auf der Festplatte gespeichert werden).

Ein weiterer Punkt ist, dass Sie Redis nicht abfragen können. Redis ist keine relationale Datenbank, sie unterstützt keinen Ad-hoc-Abfragemechanismus, sondern nur Befehle mit zuvor definierten Zugriffspfaden. Wenn Sie Daten mit unterschiedlichen Parametern suchen möchten, müssen Sie alle möglichen Suchen antizipieren und die relevanten Datenstrukturen (Set, sortierte Sets usw.) zum Zeitpunkt des Einfügens erstellen.

Ein anderer Speicher (MongoDB oder eine relationale Datenbank) ist wahrscheinlich viel besser für Ihren Anwendungsfall geeignet.