Rumah > Soal Jawab > teks badan
从RDBMS彻底的过渡到NoSQL,关键的是不是NoSQL中的Key设计咧? 比如原先的登录注册,RDBMS中可能是
user_id, username, password
1 , user , xxxxxxxx
2 , user2 , xxxxxxxx
过渡到Redis,可以这样
users:user password
users:user2 password
检测用户是否已经注册
RDBMS:
select count(*) from table where username = 'user2'
Redis:
Get users:user2
但是抛弃“关系”又怎么实现“关系”呢? 比如用户还有profile。 redis可以以users:username为key。然后存个对象进去。 但是怎么进行搜索呢?比如,我要获取所有注册时间在指定时间的一批用户。当然,可以按照users:username:profile_name挨个存,比如:
users:user2:profile_photo /path/hash.jpg
users:user2:profile_regdate timestamp
users:user3:profile_regdate timestamp
但是,会不会出现,删除某用户的时候,由于特殊原因导致删不干净的问题……比如user3的所有数据正在删除,然后异常了,导致profile_regdate没有删除。而且以后也检测不到了。
再者,好友关系。redis可以这么存:
relation:uid:fuid timestamp
relation:fuid:uid timestamp
假设需求:获取我的好友的所有除我以外的所有好友。
暂时就这么多……不知道表述是否清楚了。
ringa_lee2017-04-21 10:59:54
Pertama sekali, jika anda ingin menggunakan berbilang medan, jangan simpan medan secara berasingan atau sirikan objek dan kemudian simpannya. Ini tidak berbeza dengan memcache.
Kedua, anda perlu memahami hakikat bahawa kami tidak menggunakan redis untuk menggantikan sepenuhnya pangkalan data hubungan Seperti yang anda katakan, mencari pengguna dengan nama pengguna tidak perlu dimasukkan ke dalam redis sama sekali hanya untuk menggunakan redis.
Dengan redis anda boleh melakukan caching, jadi anda hanya perlu menggunakan kunci utama sebagai kunci, dan anda juga boleh menggunakan ciri indeksnya untuk membuat senarai
Anda boleh menggunakan hash
storan objek untuk berbilang medan
HMSET user:1234 name "hello" password "123456" timestamp "12321321"
Simpan kunci utama dalam SET
atau SORTED SET
SADD user_list 1234
Perlu diambil perhatian bahawa perintah SORT
redis boleh menyelesaikan banyak pertanyaan dan bukannya SQL
, seperti kaedah storan cincang di atas, jika kita ingin mengisih mengikut timestamp
dan menyenaraikan user
dalam tempoh tertentu julat Datang
SORT user_list BY user:*->timestamp GET # LIMIT 0 10 DESC
Ia bersamaan dengan pernyataan SQL
SELECT * FROM user ORDER BY timestamp DESC LIMIT 0 10
怪我咯2017-04-21 10:59:54
Soalan pertama hanyalah bahawa anda menggunakan redis sebagai memcache, untuk memahami struktur cincangan Maklumat pengguna harus menggunakan struktur cincang, seperti pengguna:1->{username:sss,umur:12}
.迷茫2017-04-21 10:59:54
Gunakan lebih banyak kaedah cincang untuk menyimpan data dalam redis. Dengan cara ini, beberapa persatuan yang perlu digunakan boleh disimpan menggunakan nilai utama dalam cincang. Kedua, beberapa perhubungan dan tabiat kaedah pertanyaan yang asalnya direka dalam pangkalan data hubungan perlu diselaraskan apabila menggunakan redis. Kita tidak boleh meniru sepenuhnya idea-idea sebelumnya.