Speicher (Memory Store)
Die MemoryStore ist eine In-Memory-Implementierung des Store Interfaces, die pro Sitzung Key-Value-Speicherung bereitstellt, gestützt durch eine thread-sichere ConcurrentHashMap.
Sie ist leichtgewichtig, schnell und geeignet für Einzelknoten-Bereitstellungen, Entwicklungsumgebungen und Szenarien, in denen Sitzungsdaten nicht zwischen mehreren Serverinstanzen geteilt werden müssen.
Wesentliche Merkmale
Lokaler pro-Sitzung-Speicher — jede Verbindung erhält ihre eigene Store-Instanz
Thread-sicherer Zugriff — unterstützt gleichzeitige Lese-/Schreibzugriffe mithilfe von
ConcurrentHashMapFlüchtige Daten — Werte existieren nur im JVM-Speicher und gehen bei Neustart oder Ausfall verloren
Kein Knoten-übergreifendes Teilen — Daten werden nicht zwischen Servern verteilt
Keine externen Abhängigkeiten — so einfach wie möglich
StoreImplementierung
Wie es funktioniert
set(key, value)speichert einen Wert im Speicher, der auf die Sitzung begrenzt istget(key)ruft den gespeicherten Wert ab, odernullfalls keiner vorhanden isthas(key)prüft das Vorhandensein eines Schlüssels, ohne den Wert zu lesendel(key)entfernt einen einzelnen Eintragdestroy()löscht alle Einträge, wird typischerweise beim Trennen des Clients aufgerufen
Vorteile
👍 Schneller, latenzarmer Zugriff
👍 Keine externen Dienste erforderlich
👍 Ideal für Entwicklung und lokale Tests
👍 Funktioniert gut mit jedem EventStore für hybride Bereitstellungen
(z. B., MemoryStore + KafkaEventStore oder MemoryStore + RedisStreamEventStore)
Einschränkungen
ℹ️ Nicht verteilt — Werte werden nicht zwischen Knoten synchronisiert
ℹ️ Nicht persistent — Daten gehen bei Serverneustart oder Absturz verloren
ℹ️ Nicht geeignet für horizontales Skalieren, sofern nicht mit einer verteilten StoreFactory Implementierung
Zusammenfassung
MemoryStore bietet lokalen, flüchtigen pro-Sitzung-Datenspeicher, ideal für Single-Node-Setups und Entwicklung. Kann mit jedem verteilten EventStore kombiniert werden, wenn die Verteilung von Ereignissen erforderlich ist, ohne verteilten Speicher.
Zuletzt aktualisiert
War das hilfreich?