redis を使用して、Web アプリケーションのソーシャル ストリームと通知システムを実装しています。私はredisが初めてで、ハッシュとその効率について疑問があります。
この素晴らしいInstagram の投稿を読み 、ストレージを最小限に抑えるために同様のソリューションを実装することを計画しました。
彼らのブログで述べたように、彼らはこれが好きでした
ハッシュ タイプを利用するために、すべてのメディア ID を 1000 のバケットにバケット化します (ID を取得し、1000 で割り、残りを破棄するだけです)。これにより、どのキーに陥るかが決まります。次に、そのキーに存在するハッシュ内で、メディア ID はハッシュ内のルックアップ キーであり、ユーザー ID は値です。たとえば、メディア ID が 1155315 の場合、これはバケット 1155 (1155315 / 1000 = 1155) に分類されることを意味します。
HSET "mediabucket:1155" "1155315" "939"
HGET "mediabucket:1155" "1155315"
> "939"
そのため、1000 個の個別のキーを持つ代わりに、1000 個のルックアップ キーを持つ 1 つのハッシュに格納しています。私が疑問に思っているのは、ルックアップ キーの値をさらに大きくできない理由です。
例: Media ID of 1155315 will fall into mediabucket:115 by dividing it by 10000
またはそれ以上。
なぜ彼らは 1000 個のルックアップ キーを持つ 1 つのハッシュ バケットで解決するのですか。100000 個のルックアップ キーを持つ 1 つのハッシュ バケットを持つことができないのはなぜですか。それは効率に関係していますか?
私の Web アプリケーションに効率的な方法を実装するための提案が必要です。
PSお願いします!stackoverflow は提案を求めるためのものではないとは言わないでください。また、どこにヘルプがあるのかもわかりません。
ありがとう!