検索

ホームページ  >  に質問  >  本文

redis一对多的实现???求解

最近在学习使用redis,在关系型的mysql下一个简单的一对多,很简单,如下

用户表user主表

id name age
1 jack 5
2 rose 12
3 dad 23

图片表pics从表

id uid img_url
1 1 ./1zxcz12ad.jpg
2 1 ./zsad12sad.jpg
3 1 ./12ea2222123xsw1212.jpg
4 2 ./12eaxx12sw1212.jpg

换到基于key=》value的redis就晕了。。。请问如何设计出符合上表格的redis数据设计???

PHP中文网PHP中文网2829日前1693

全員に返信(4)返信します

  • PHPz

    PHPz2017-04-22 09:02:29

    Redis は最初から「リレーション」を処理するように設計されておらず、MySQL はリレーショナル データベースです。推奨されませんが、redis を使用して実装することもできます。ユーザーの ID をキーとして使用し、これらの画像をリストに保存できます:
    $redis->rPush("user_1", "./1zxcz12ad.jpg");
    $redis->rPush("user_1", "./zsad12sad.jpg");
    $redis->rPush("user_2", "./12eaxx12sw1212.jpg");
    次に、$redis->lRange('user_1', 0, -1); を通じてこのリストを取得できます。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-22 09:02:29

    ハッシュのみ使用できます。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-22 09:02:29

    ユーザーメインテーブルはハッシュを使用します。
    写真テーブルもハッシュを使用して処理されますが、フィールドは写真の ID を使用します

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-22 09:02:29

    HSET ユーザー 1「{名前: 'jack'、年齢: 5、写真: [1, 2]}」

    HSET ユーザー 2「{名前: 'rose'、年齢: 12、写真: [4]}」

    HSET 写真 1 "{img_url: './1zxcz12ad.jpg'、ユーザー: 1'}"
    HSET 写真 2 "{img_url: './zsad12sad.jpg'、ユーザー: 1'}"
    HSET 写真 4 "{ img_url: './12eaxx12sw1212.jpg'、ユーザー: 2'}"

    1 対多または 1 対 1 (ZADD キースコアメンバー) に適用:

    ZADD ユーザー_写真 1 1
    ZADD ユーザー_写真 1 2
    ZADD ユーザー_写真 2 4

    ユーザー 2 の写真をクエリします (ZRANGEBYSCORE キー最小最大 [WITHSCORES])

    ZRANGEBYSCORE ユーザー_写真 2 2

    ユーザー 1 と 2 の写真をクエリします

    ZRANGEBYSCORE User_Pics 1 2 WITHSCORE

    写真 4 のユーザー (ZSCORE キーメンバー) をクエリします

    ZSCORE ユーザー_写真 4




    HSET ユーザー 1「{名前: 'jack'、年齢: 5、写真: [1, 2]}」

    HSET ユーザー 2「{名前: 'rose'、年齢: 12、写真: [1, 2]}」

    HSET 写真 1 "{img_url: './1zxcz12ad.jpg'、ユーザー: [1, 2]'}"

    HSET 写真 2 "{img_url: './zsad12sad.jpg'、ユーザー: [1, 2]'}"

    多対多の場合 (値は "userID-PicsID" ):
    ZADD User_Pics 1 "1-1"
    ZADD User_Pics 1 "1-2"
    ZADD User_Pics 2 "2-1"
    ZADD User_Pics 2 "2 -2 "

    ユーザー 2 の写真をクエリする

    ZRANGEBYSCORE ユーザー_写真 2 2

    ユーザー 1 と 2 の写真をクエリします

    ZRANGEBYSCORE User_Pics 1 2 WITHSCORE

    ZADD 写真_ユーザー 1 "1-1"
    ZADD 写真_ユーザー 1 "2-1"
    ZADD 写真_ユーザー 2 "1-2"
    ZADD 写真_ユーザー 2 "2-2"

    写真1 1のユーザーに問い合わせます

    ZRANGEBYSCORE Pics_User 1 1

    写真1 1と2のユーザーに問い合わせます

    ZRANGEBYSCORE Pics_User 1 2 WITHSCORE

    返事
    0
  • キャンセル返事