Maison > Questions et réponses > le corps du texte
从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
Tout d'abord, si vous souhaitez utiliser plusieurs champs, ne stockez pas les champs individuellement, ni ne sérialisez un objet puis ne le stockez pas. Ce n'est pas différent de Memcache.
Deuxièmement, vous devez comprendre le fait que nous n'utilisons pas Redis pour remplacer complètement la base de données relationnelle. Comme vous l'avez dit, la recherche d'utilisateurs par nom d'utilisateur n'a pas du tout besoin d'être mise dans Redis. juste pour utiliser Redis.
Avec Redis, vous pouvez effectuer une mise en cache, vous n'avez donc besoin que d'utiliser la clé primaire comme clé, et vous pouvez également utiliser sa fonction d'index pour créer des listes
Vous pouvez utiliser hash
le stockage d'objets pour plusieurs champs
HMSET user:1234 name "hello" password "123456" timestamp "12321321"
Enregistrez la clé primaire dans un SET
ou SORTED SET
SADD user_list 1234
Il convient de noter que la commande SORT
de redis peut résoudre de nombreuses requêtes au lieu de SQL
, comme la méthode de stockage de hachage ci-dessus, si nous voulons trier par timestamp
et lister user
dans un certain gamme Viens
SORT user_list BY user:*->timestamp GET # LIMIT 0 10 DESC
C'est équivalent à une instruction SQL
SELECT * FROM user ORDER BY timestamp DESC LIMIT 0 10
怪我咯2017-04-21 10:59:54
La première question peut uniquement être que vous utilisez Redis comme memcache, pour comprendre la structure de hachage. Les informations utilisateur doivent utiliser une structure de hachage, telle que user:1->{username:sss,age:12}
.迷茫2017-04-21 10:59:54
Utilisez davantage de méthodes de hachage pour stocker les données dans Redis. De cette façon, certaines associations qui doivent être utilisées peuvent être enregistrées en utilisant les valeurs clés du hachage. Deuxièmement, certaines relations et habitudes de méthodes de requête conçues à l'origine dans les bases de données relationnelles doivent être ajustées lors de l'utilisation de Redis. Nous ne pouvons pas copier complètement les idées précédentes.