3

私が作成している小さなゲームのプライマリデータベースとしてRedisを使用しようとしています(主にプログラミングとRedisの使用をいじくりまわすため)。

しかし、私は答えを見つけることができなかったシナリオに出くわしました:

人々が参加できるさまざまなマップの名前(多くはありません)のリストをIDとともに保存したいと思います。注:名前からIDを取得する必要はありません。

これができると私が信じる2つの方法は、情報を文字列またはハッシュとして保存することです。

すなわち:

1)文字列ベース:

  • マップの設定:0「メイン」
  • マップの設定:1「島」
  • など(そして多分maps:idは自動増分値を保存します)

2)ハッシュベース:

  • hsetマップ"0""メイン"
  • hsetマップ"1""島"

私の質問は、どちらの方法が最適だと思われるかです。私が単一のハッシュ化されたオブジェクトに傾いているほど多くのマップが存在することは決してないことを考えると。これは、存在するすべてのマップを返すための優れたメソッドを提供するためです。しかし、文字列ベースのクエリがより役立つという特別な理由はありますか。

うまくいけば、あなたは私にいくつかの明確な情報を与えることができます。

ありがとう、Pluckerpluck

4

1 に答える 1

7

文字列ベースの値は、ハッシュよりもはるかに多くのメモリを消費するため、実際には推奨されていません。

Redisは小さなハッシュを最適化し、メモリ効率の高い方法でそれらをエンコードします。このエンコーディングはzipmap(またはredis 2.6ではziplist)と呼ばれます。http://redis.io/topics/memory-optimization、特に「可能な場合はハッシュを使用する」のセクションを参照してください。

于 2012-04-11T13:53:20.467 に答える