2010-04-20

[翻訳]rediscookbook/4_higher_level_data_structures/implement_a_social_graph

### 問題

ある種のアプリケーションでユーザのソーシャルグラフを実装するのに単一または複数の方向の関係が利用可能な状態(フォローやフレンドシップ)で Redis を使いたいとしましょう。

### 解法

Redis 組み込みの set 関数を使って、各ユーザのユニークID をキーとした「follow」、「follower」と「blocked」リストを構成してください。redis の生データではこのように見えます:

    redis> SADD user:1:follows 2
    (integer) 1
    redis> SADD user:2:followers 1
    (integer) 1
    redis> SADD user:3:follows 1
    (integer) 1
    redis> SADD user:1:followers 3
    (integer) 1
    redis> SADD user:1:follows 3
    (integer) 1
    redis> SADD user:3:followers 1
    (integer) 1
    redis> SINTER user:1:follows user:1:followers
    1. 3

### 検討

Redis はキーに割り当てられたユニークな値の集まりの「sets」を構成することができます。
特定のユーザのために「follows」「followers」リストの両方を作成し、簡単なセットの交点を使用することで彼らの「friendships」について求められるでしょう。

Ruby でそのシステムを実装する場合には、このように見えます。:

{% code_snippet social_graph.rb %}

0 件のコメント:

コメントを投稿