2017-05-25 1 views
0

Ich entwickle ein ASP.NET Web Api Projekt. Für einen Teil meines Systems brauche ich einen Schlüssel-Wert-Speicher, um Strings zu speichern. Sowohl der Schlüssel als auch der Wert sind Strings (obwohl sie lange sein können). Beide Schlüssel und Werte sind einzigartig.Schlüssel - Wertspeicher, der die Suche nach Werten unterstützt

Anfänglich habe ich Redis verwendet, das Problem ist, dass ich innerhalb des Speichers nicht nur nach Schlüssel suchen muss, sondern auch nach Wert (bestimmen, ob der Wert vorhanden ist, keine Notwendigkeit, den Schlüssel in dieser Situation zurückgeben).

Grundsätzlich habe ich zwei Optionen, die erste verwendet die Standard-db für mein Projekt - PostgreSQL. Ansonsten sollte ich einen anderen Schlüssel-Wert-Speicher wählen, der die oben erwähnte Operation unterstützt. Welche Option würden Sie vorschlagen? Wenn der zweite, welcher Speicher eine solche Operation unterstützt? Welche Option ist besser in Bezug auf die Leistung?

Antwort

1

Was Sie brauchen, ist nicht ein weiterer Datenspeicher, sondern ein Wertindex. Selbst wenn Sie postgresql oder mongodb oder etwas anderes verwenden, müssen Sie immer noch einen Index für den Wert erstellen, um eine effiziente Wertesuche durchzuführen.

Für die Redis-Lösung können Sie einen zusätzlichen SET verwenden, um alle Werte zu speichern. Wenn Sie die Existenz eines Wertes überprüfen möchten, suchen Sie einfach nach SET. Natürlich, wenn Sie ein neues Paar kv hinzufügen, müssen Sie auch die SET aktualisieren.

Mit Lua-Skript können Sie auch die beiden Aktualisierungsvorgänge in einer Transaktion vornehmen.

+0

Danke, ich denke, ich werde Redis verwenden, die Lösung mit dem Set wird es einfacher machen. – StefanL19

+0

Hinweis: Suchen nach Wert in Redis ist nicht immer trivial, und während Sets sehr weit gehen können (und Sorted Sets noch weiter), gibt es Herausforderungen ... für eine einfachere und viel robustere Lösung, schauen Sie sich redisearch.io - Die schnellste Suchmaschine der Welt, die als Redis-Modul gebaut wurde. –

Verwandte Themen