2012-04-11 8 views
3

J'essaie d'utiliser Redis comme base de données primaire pour un petit jeu que je fais (surtout pour faire des erreurs avec la programmation et l'utilisation de Redis).Meilleure façon de stocker une petite liste de valeurs-clés dans Redis

Cependant, je suis tombé sur un scénario que je ne pouvais pas trouver une réponse à:

Je souhaite stocker une liste des noms des différentes cartes que les gens peuvent être sur (pas beaucoup d'entre eux) ainsi que leur id. Note: Je n'ai jamais besoin d'obtenir l'identifiant du nom.

Les deux façons que je crois que cela peut être fait soit stocker l'information comme une chaîne ou comme un hachage.

-à-dire:

1) Chaîne à base:

  • cartes set: 0 "Main"
  • cartes de set: 1 "Île"
  • etc (et peut-être une carte: id magasin d'une valeur d'incrément automatique)

2) de hachage sur la base:

  • cartes HSeT "0" "Main"
  • cartes HSeT "1" "Island"
  • etc

Ma question est ce qui semble être le meilleur moyen. Étant donné qu'il n'y aura jamais autant de cartes, je pencherai vers le seul objet haché. Partiellement parce que cela fournit une bonne méthode pour retourner toutes les cartes existantes. Mais existe-t-il une raison particulière pour laquelle les requêtes basées sur des chaînes seraient plus utiles.

J'espère que vous pouvez me donner des informations claires.

Merci, Pluckerpluck

Répondre

6

La chaîne des valeurs basées sont effectivement découragés, car il consomme beaucoup plus de mémoire qu'un hachage.

Redis optimise les petits hachages et les encode de manière efficace. Cet encodage est appelé zipmap (ou ziplist dans redis 2.6). Voir http://redis.io/topics/memory-optimization, en particulier la section "Utiliser des hachages si possible".

+1

C'était assez clair et concis. Merci de répondre. – Pluckerpluck

Questions connexes