Broker Key-Value
Die Deepkit Broker Key-Value Class ist eine einfache Key/Value-Store-Abstraktion, die mit dem Broker-Server funktioniert. Sie ist eine einfache Möglichkeit, Daten vom Broker-Server zu speichern und abzurufen.
Es ist kein lokales Caching implementiert. Alle get
-Aufrufe sind jedes Mal echte Netzwerk-Requests an den Broker-Server. Um dies zu vermeiden, verwenden Sie die Broker Cache Abstraktion.
Die Daten werden auf dem Server nicht persistent gespeichert, sondern nur im Speicher gehalten. Wenn der Server neu startet, gehen alle Daten verloren.
Verwendung
import { BrokerKeyValue } from '@deepkit/broker'; const keyValue = new BrokerKeyValue(adapter, { ttl: '60s', // Time to Live für jeden Key. 0 bedeutet keine TTL (Standard). }); const item = keyValue.item<number>('key1'); await item.set(123); console.log(await item.get()); //123 await item.remove();
Die Daten werden basierend auf dem gegebenen Type automatisch mit BSON serialisiert und deserialisiert.
Die Methods set
und get
können auch direkt auf der BrokerKeyValue
-Instanz aufgerufen werden, haben jedoch den Nachteil, dass Sie jedes Mal den Key und den Type übergeben müssen.
await keyValue.set<number>('key1', 123); console.log(await keyValue.get<number>('key1')); //123
Increment
Die Method increment
ermöglicht es, den Wert eines Keys atomar um einen gegebenen Betrag zu erhöhen.
Beachten Sie, dass dies einen eigenen Eintrag im Speicher auf dem Server erstellt und nicht mit set
oder get
kompatibel ist.
const activeUsers = keyValue.item<number>('activeUsers'); // Atomar um 1 inkrementieren await activeUsers.increment(1); await activeUsers.increment(-1); // Die einzige Möglichkeit, den aktuellen Wert zu erhalten, ist, increment mit 0 aufzurufen const current = await activeUsers.increment(0); // entfernt den Eintrag await activeUsers.remove();
App-Verwendung
Ein vollständiges Beispiel, wie Sie BrokerKeyValue in Ihrer Anwendung verwenden.
Die Class ist im Dependency-Injection-Container automatisch verfügbar, wenn Sie das FrameworkModule
importieren.
Weitere Informationen finden Sie auf der Seite Erste Schritte.
import { BrokerKeyValue, BrokerKeyValueItem } from '@deepkit/broker'; import { FrameworkModule } from '@deepkit/framework'; // Verschieben Sie diesen Type in eine gemeinsame Datei type MyKeyValueItem = BrokerKeyValueItem<User[]>; class Service { constructor(private keyValueItem: MyKeyValueItem) { } async getTopUsers(): Promise<User[]> { // Könnte undefined sein. Sie müssen diesen Fall behandeln. // Verwenden Sie Broker Cache, wenn Sie dies vermeiden möchten. return await this.keyValueItem.get(); } } const app = new App({ providers: [ Service, provide<MyKeyValueItem>((keyValue: BrokerKeyValue) => keyValue.item<User[]>('top-users')), ], imports: [ new FrameworkModule(), ], });