redis一对多的实现???求解
PHP中文网
PHP中文网 2017-04-22 09:00:29
0
4
1658

最近在学习使用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中文网

认证0级讲师

모든 응답(4)
PHPzhong

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);을 통해 이 목록을 얻을 수 있습니다.

洪涛

해시만 사용할 수 있습니다.

Ty80

사용자 메인 테이블은 해시를 사용합니다.
사진 테이블도 해시를 사용하지만 필드는 사진의 ID를 사용합니다

Peter_Zhu

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿