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

最近在学习使用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级讲师

répondre à tous(4)
PHPzhong

Redis n'a pas été conçu pour gérer les "relations" depuis le début, et MySQL est une base de données relationnelle. Bien que cela ne soit pas recommandé, il peut également être implémenté avec Redis. Vous pouvez utiliser l'identifiant de l'utilisateur comme clé et enregistrer ces images dans une liste :
$redis->rPush("user_1", "./1zxcz12ad.jpg");
$redis->rPush("user_1", "./zsad12sad.jpg");
$redis->rPush("user_2", "./12eaxx12sw1212.jpg");
Ensuite, vous pouvez obtenir cette liste via : $redis->lRange('user_1', 0, -1);.

洪涛

Vous ne pouvez utiliser que du hasch.

Ty80

La table principale de l'utilisateur utilise du hachage.
La table des photos utilise également un hachage, mais le champ utilise l'ID des photos

Peter_Zhu

Utilisateur HSET 1 "{nom : 'jack', âge : 5, photos : [1, 2]}"

Utilisateur HSET 2 "{nom : 'rose', âge : 12, photos : [4]}"

Photos HSET 1 "{img_url : './1zxcz12ad.jpg', Utilisateur : 1'}"
Photos HSET 2 "{img_url : './zsad12sad.jpg', Utilisateur : 1'}"
HSET Photos 4 "{img_url : './12eaxx12sw1212.jpg', Utilisateur : 2'}"

适用于1对多或者1对1 (membre du score clé ZADD):

ZADD User_Pics 1 1
ZADD User_Pics 1 2
ZADD User_Pics 2 4

Photos de l'utilisateur 2 (touche ZRANGEBYSCORE min max [WITHSCORES])

ZRANGEBYSCORE User_Pics 2 2

Photos de l'utilisateur 1 et 2 de l'utilisateur

ZRANGEBYSCORE User_Pics 1 2 AVECSCORES

查询pics 4的utilisateur (membre clé ZSCORE)

ZSCORE User_Pics 4




Utilisateur HSET 1 "{nom : 'jack', âge : 5, photos : [1, 2]}"

Utilisateur HSET 2 "{nom : 'rose', âge : 12, photos : [1,2]}"

Photos HSET 1 "{img_url : './1zxcz12ad.jpg', Utilisateur : [1, 2]'}"

Photos HSET 2 "{img_url : './zsad12sad.jpg', Utilisateur : [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"

Photos de l'utilisateur 2 de 查询

ZRANGEBYSCORE User_Pics 2 2

Photos de l'utilisateur 1 et 2 de l'utilisateur

ZRANGEBYSCORE User_Pics 1 2 AVECSCORES

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的utilisateur

ZRANGEBYSCORE Pics_User 1 1

查询pics1 1和2的utilisateur

ZRANGEBYSCORE Pics_User 1 2 AVECSCORES

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal