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.