4

redis に格納する 2D 配列があり、JSON 文字列として格納するか、行ごとに 1 つのハッシュを格納するという 2 つの解決策があります。どちらの方法が良いですか?

4

3 に答える 3

4

アプリケーションを設計するときに、同じ質問に直面しました。私はシンプルさの側を選びました。データの 2 次元配列がデータベースの行を表していると仮定します。JSON でエンコードし、 を使用して保存しSETます。これにより、1 つの redis コマンドを使用して複数のオブジェクトを処理したい場合にMGETandを使用できます。MSETこのデータが私のデータベースで更新された場合、私DELが鍵となります。私にとって、これは redis ハッシュを更新しようとするよりも簡単です。

redis のハッシュには利点があります。通常、「ziplist」エンコーディング redis が使用するため、使用するメモリが少なくなります。シリアル化も回避できます。これは、一部のアプリでは非常に重要になる可能性があります。

これは、私にとってのハッシュの使用例です。ユーザーIDを指定してユーザー名を調べたいとしましょう。私はそうするでしょうHGET user.usernames 1234。これにより、ユーザー ID 1234 のユーザー名が得られます。ミスがある場合は、DB にクエリを実行して設定します。そのデータは変更されないため、ハッシュが期限切れになることはありません。ユーザー全体を取得し、シリアル化を解除して、必要なフィールドを返すのではなく、共通のデータをすばやく検索できます。

予想される大規模なルックアップ テーブルについては、ここで目的としてアルゴリズムを使用し ます。

どちらの方法を選択しても、一貫性を保つだけです。

于 2013-05-14T03:33:40.350 に答える
1

各要素を独自のキーに格納できます。名前に要素のインデックスと、おそらく配列の次元も含まれるように、キーに名前を付けるだけです。

于 2013-05-13T19:37:48.557 に答える