Maison > Questions et réponses > le corps du texte
最近在学习使用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数据设计???
PHPz2017-04-22 09:02:29
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);.
PHP中文网2017-04-22 09:02:29
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
天蓬老师2017-04-22 09:02:29
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