redis に格納する 2D 配列があり、JSON 文字列として格納するか、行ごとに 1 つのハッシュを格納するという 2 つの解決策があります。どちらの方法が良いですか?
3 に答える
アプリケーションを設計するときに、同じ質問に直面しました。私はシンプルさの側を選びました。データの 2 次元配列がデータベースの行を表していると仮定します。JSON でエンコードし、 を使用して保存しSET
ます。これにより、1 つの redis コマンドを使用して複数のオブジェクトを処理したい場合にMGET
andを使用できます。MSET
このデータが私のデータベースで更新された場合、私DEL
が鍵となります。私にとって、これは redis ハッシュを更新しようとするよりも簡単です。
redis のハッシュには利点があります。通常、「ziplist」エンコーディング redis が使用するため、使用するメモリが少なくなります。シリアル化も回避できます。これは、一部のアプリでは非常に重要になる可能性があります。
これは、私にとってのハッシュの使用例です。ユーザーIDを指定してユーザー名を調べたいとしましょう。私はそうするでしょうHGET user.usernames 1234
。これにより、ユーザー ID 1234 のユーザー名が得られます。ミスがある場合は、DB にクエリを実行して設定します。そのデータは変更されないため、ハッシュが期限切れになることはありません。ユーザー全体を取得し、シリアル化を解除して、必要なフィールドを返すのではなく、共通のデータをすばやく検索できます。
予想される大規模なルックアップ テーブルについては、ここで目的としてアルゴリズムを使用し ます。
どちらの方法を選択しても、一貫性を保つだけです。
各要素を独自のキーに格納できます。名前に要素のインデックスと、おそらく配列の次元も含まれるように、キーに名前を付けるだけです。