2012-04-11 7 views
3

Ich versuche, Redis als primäre Datenbank für ein kleines Spiel zu verwenden, das ich mache (vor allem mit Programmierung und Redis).Der beste Weg, um eine kleine Schlüssel-Wert-Liste in Redis zu speichern

Allerdings stieß ich auf ein Szenario, das ich nicht eine Antwort finden konnte:

Ich mag eine Liste mit den Namen von verschiedenen Karten speichern, die Menschen auf (nicht viele von ihnen) sein können, zusammen mit ihrem Ich würde. Hinweis: Ich brauche die ID nie aus dem Namen.

Die zwei Möglichkeiten, die ich glaube, dass dies getan werden kann, sind entweder die Informationen als Zeichenfolge oder als Hash speichern.

dh:

1) String basiert:

  • Satz Karten: 0 "Main"
  • Satz Karten: 1 "Insel"
  • usw. (und vielleicht ein Karten: id Shop eine automatische Inkrementwert)

2) Hash basiert:

  • hset Karten "0" "Main"
  • hset Karten "1" "Insel"
  • etc

Meine Frage ist, welche Art und Weise die beste zu sein scheint. Angesichts der Tatsache, dass es nie so viele Karten geben wird, lehne ich mich dem einzelnen Hash-Objekt zu. Teilweise, weil dies eine gute Methode bietet, alle vorhandenen Karten zurückzugeben. Aber gibt es einen bestimmten Grund, dass die string-basierten Abfragen nützlicher wären.

Hoffentlich können Sie mir einige klare Informationen geben.

Danke, Pluckerpluck

Antwort

6

Die Basis Werte String abgeraten eigentlich, weil es viel mehr Speicher als ein Hash verbraucht.

Redis optimiert kleine Hashes und codiert sie in einer speichereffizienten Weise. Diese Codierung heißt zipmap (oder ziplist in redis 2.6). Siehe http://redis.io/topics/memory-optimization, speziell den Abschnitt "Hashes verwenden wenn möglich".

+1

Das war ziemlich klar und prägnant. Danke für die Antwort. – Pluckerpluck

Verwandte Themen