찾다

 >  Q&A  >  본문

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中文网2763일 전1644

모든 응답(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 "{이름: '장미', 나이: 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 User_Pics 1 1
    ZADD User_Pics 1 2
    ZADD User_Pics 2 4

    查询사용자 2의 사진(ZRANGEBYSCORE 키 최소 최대 [WITHSCORES])

    ZRANGEBYSCORE User_Pics 2 2

    查询사용자 1과 2의 사진

    ZRANGEBYSCORE User_Pics 1 2 WITHSCORES

    查询pics 4의 사용자(ZSCORE 핵심 멤버)

    ZSCORE User_Pics 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 User_Pics 2 2

    查询사용자 1과 2의 사진

    ZRANGEBYSCORE User_Pics 1 2 WITHSCORES

    ZADD Pics_User 1 "1-1"
    ZADD Pics_User 1 "2-1"
    ZADD Pics_User 2 "1-2"
    ZADD Pics_User 2 "2-2"

    查询pics1 1명의 사용자

    ZRANGEBYSCORE Pics_User 1 1

    查询pics1 1과 2의 사용자

    ZRANGEBYSCORE Pics_User 1 2 WITHSCORES

    회신하다
    0
  • 취소회신하다