2011-07-07 11 views
35

なぜRedisは文字列の代わりに整数のデータベース番号を使用しますか?文字列を「実際の」整数にマッピングする小さな内部データ構造を維持することは自明ではないようです。なぜRedisは整数のデータベース番号を使用していますか?

+0

redis devのリストに質問してください。 – bmargulies

+1

私はここで答えを得ることができない場合、それは私の次のステップになります...しかし、私は可能な限りメーリングリストを避けようとします:P –

+3

閉じるに投票した人々:私はこの質問が「意見、議論、議論、ポーリング、または議論の延長を要請するとは思っていません」と思っていますが、私はレディスが人気がないことを知っていますが、非常に狭い "。 –

答えて

40

RedisがDB名ではなくインデックスとして文字列を使用しないのは、Redisデータベースの目標と能力が辞書の外部レベルを提供しないということです:Redis辞書は多くの辞書に拡張できません。小さな数字(これはトレードオフ)であり、デザインごとにネストされたデータ構造を提供したくないので、これはちょうど「いくつかのネームスペース」であり、その結果数値の小さいインデックスを使用するのが最良の選択肢のように見えます。

+5

DB名前を名前空間文字列接頭辞として扱うよりも、これがより良いアプローチである理由はありますか? – shazow

4

名前付きデータベースを持つことは、本当にredisの設計目標に適合しません。まず、パフォーマンスを最大にするように設計されたシステムでは、ほとんどのユーザーがDB 0にすべてを入れると、すべての呼び出しに文字列ルックアップを追加するのは良い考えではありません。

コアをシンプルに保つことが、もう1つの設計目標です。要求された新しいコマンドを、パフォーマンスの大幅な低下なしにクライアント上で既存のコマンドを組み合わせて実装できる場合、コアシステムに追加されません。名前付きデータベースが本当に必要な場合は、クライアントコードを更新して文字列を読み取って番号をredisに送信するのは簡単です。

+1

"すべての呼び出しに文字列ルックアップを追加する" - 私が間違っていれば私を修正しますが、各 'SELECT'呼び出し(つまり、シンボル名を整数にマップする)のためにルックアップを行うだけでいいでしょうか? –

+1

真ですが、データベースと接続の使い方に応じて、それと同等に近いことがあります。 –

関連する問題