0

Redis で多くのカウンターをリアルタイムで追跡するシステムを構築しています。各カウンターは基本的に、特定の URL に表示される広告キーワードのインプレッション、コンバージョンの詳細です。

すなわち。特定の URL に 10 個のキーワードが表示されている場合、インプレッションとコンバージョンの両方について、それらのキーワードごとにカウントを更新する必要があります。また、URL の各インプレッションで、10 個のキーワードの異なるセットが表示される可能性があります。

すなわち。私が必要とする基本的なデータモデルは次のようなものです

  • > URL=>

     k1 =>
            impression => 2
            conversion => 1
     k2 =><br>
            impression => 100
            conversion => 8
     .
     .
     k100 (max around 100)</li>
    

Redis にはネストされたハッシュがないことを理解しているため、上記のように 2 レベルのハッシュを保存することはできません。

この問題を解決する最善の方法は何ですか?

k1-impression と k1 conversion を組み合わせて 1 つのフィールドにすることを考えました

つまり好き

  • URL =>

       k1-impression => 100
       k1-conversion => 3
       .<br>
       . so on</li>
    

しかし、問題は、「k1」、「k2」などの長さが重要 (120-150 バイト) であり、メモリを節約するために、可能であればそのデータを複製したくないことです。

この問題を解決するにはどうすればよいですか?

どんな助けでも大歓迎です。

4

1 に答える 1

1

キーワードの長さが気になるほど長い場合は、正規化する必要があります。それらをエンコードおよびデコードするために、のハッシュkeyword -> idとのハッシュを作成します。id -> keyword次に、フォームのURLごとのハッシュを持つことができますurl => {kw_id:impressions => 1123, kw_id:conversions => 28}。これは、キーワードのインデックスを作成する必要がある場合にも役立ちます。たとえば、すべてのURLでパフォーマンスの高いキーワードのトップ10を表示する必要がある場合は、すぐにインデックスを作成できます。

于 2012-09-19T21:11:25.727 に答える