最近在学习使用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数据设计???
Redis tidak direka untuk mengendalikan "hubungan" dari awal, dan mysql ialah pangkalan data hubungan. Walaupun tidak disyorkan, ia juga boleh dilaksanakan dengan redis. Anda boleh menggunakan id pengguna sebagai kunci dan menyimpan imej ini ke dalam senarai:
$redis->rPush("user_1", "./1zxcz12ad.jpg");
$redis->rPush("user_1", "./zsad12sad.jpg");
$redis->rPush("user_2", "./12eaxx12sw1212.jpg");
Kemudian anda boleh mendapatkan senarai ini melalui: $redis->lRange('user_1', 0, -1);.
Anda hanya boleh menggunakan cincang.
Jadual utama pengguna menggunakan cincang.
Jadual pics juga menggunakan cincang, tetapi medan menggunakan ID pics
Pengguna HSET 1 "{name: 'jack', umur: 5, Gambar: [1, 2]}"
Pengguna HSET 2 "{name: 'rose', umur: 12, Gambar: [4]}"
Gambar HSET 1 "{img_url: './1zxcz12ad.jpg', Pengguna: 1'}"
Gambar HSET 2 "{img_url: './zsad12sad.jpg', Pengguna: 1'}"
HSET Pics 4 "{img_url: './12eaxx12sw1212.jpg', Pengguna: 2'}"
适用于1对多或者1对1 (ahli markah kunci ZADD):
ZADD User_Pics 1 1
ZADD User_Pics 1 2
ZADD User_Pics 2 4
Gambar pengguna 2的 (kekunci ZRANGEBYSCORE maks min [WITHSCORES])
ZRANGEBYSCORE User_Pics 2 2
查询 pengguna 1和2的pics
ZRANGEBYSCORE User_Pics 1 2 WITHSCORE
查询pics 4的user (ahli kunci ZSCORE)
ZSCORE User_Pics 4
Pengguna HSET 1 "{name: 'jack', umur: 5, Gambar: [1, 2]}"
Pengguna HSET 2 "{name: 'rose', umur: 12, Gambar: [1,2]}"
Gambar HSET 1 "{img_url: './1zxcz12ad.jpg', Pengguna: [1, 2]'}"
Gambar HSET 2 "{img_url: './zsad12sad.jpg', Pengguna: [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"
查询 pengguna 2的pics
ZRANGEBYSCORE User_Pics 2 2
查询 pengguna 1和2的pics
ZRANGEBYSCORE User_Pics 1 2 WITHSCORE
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的pengguna
ZRANGEBYSCORE Pics_User 1 1
查询pics1 1和2的pengguna
ZRANGEBYSCORE Pics_User 1 2 WITHSCORE