0

ユーザーがお互いに友達になる能力があり、ユーザーの友達を表示するウィジェットがあるとします。

ここでRedisを使用して、user.idを介して関係を保存しますか?

1,2
1,5
4,1
3,1

1.friends -> 2, 3, 4, 5

しかし、それなら私はそれらの友達の詳細を取得する必要があります。これはクエリを使用して行われると思いますか"id IN(2,3,4,5)"?

4

1 に答える 1

2

間違いなくredisを使用してこのデータを表すことができます。user:1 => {'name': 'foo', 'email': 'foo@foo.foo'}1つの戦略は、ユーザーID(eg )と関係(eg user:1:friends => (2, 3, 4, 5))のユーザーIDのセットでキー設定された、ユーザーの詳細ごとにハッシュを使用することhgetall user:<ID>です。そのユーザーの情報を取得します。HGETALLはO(N)です。ここで、Nはフィールドの数です。フィールドの数が少なく(比較的)固定されるユーザーオブジェクトのようなものの場合、HGETALLは事実上O(1)であるため、追加のルックアップはそれほど高価ではありません。また、redisパイプラインを使用して、これらのルックアップをバッチ処理し、ネットワーク費用を最小限に抑えることもできます。

于 2012-07-31T16:16:25.290 に答える