Redis
 sql >> Base de données >  >> NoSQL >> Redis

Filtrer les éléments dans Redis

Comment implémentez-vous le dernier schéma dans Redis ? Est-ce possible ?

Redis est sans schéma . Appelons ce dont vous avez besoin une approche de stockage de données .

Une approche possible consiste à utiliser HSET ou HMSET pour ajouter ces objets JSON par identifiant, où leur identifiant est la clé et le texte JSON est la valeur . Nous appellerons ce hachage users:byid .

C'est la première partie du problème. Vous pouvez maintenant obtenir des objets par identifiant .

Maintenant, le problème suivant est que vous souhaitez récupérer des objets dans une plage de ce que vous appelez le classement . Pour obtenir cela, vous devez stocker vos objets dans un ensemble trié en utilisant ZADD . Les ensembles triés sont triés par score, et les éléments sont stockés avec un score . Cela semble parfait pour votre cas d'utilisation !

En fait, vous allez stocker les identifiants d'objet dans l'ensemble trié :

zadd users:byranking 10 1 5 2

... où 10 est le score (c'est-à-dire votre valeur de classement réelle) et 1 l'id et ainsi de suite.

Alors, comment filtrez-vous les éléments par classement ? Utilisation de ZRANGEBYSCORE :

  • Par classement entre 0 et 10, à l'exclusion de 10. zrangebyscore users:byranking 0 (10
  • Par classement entre 0 et 10, y compris 10. zrangebyscore users:byranking 0 10

Le soi-disant ZRANGEBYSCORE vous donnera les identifiants des utilisateurs récupérés. Comment obtenez-vous leur texte JSON ? Utilisation de HMGET :

 HMGET users:byid 1 2

... qui obtiendra les deux utilisateurs avec id 1 et 2 , si 10 le classement est inclusif.