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

Comment combiner les ensembles triés Redis ?

Il existe plusieurs façons de procéder, mais la bonne dépend de ce que vous essayez de faire. Par exemple :

  1. Vous pouvez utiliser ZRANGEBYSCORE (ou ZREVRANGEBYSCORE) dans votre code pour chaque FEED:USER:n clé et "fusionner" les réponses dans le client
  2. Vous pouvez faire un ZUNIONSTORE sur les clés pertinentes, puis faire le ZRANGEBYSCORE sur le résultat du client.
  3. Cependant, si vos "flux" sont volumineux, le flux du n° 2 doit être inversé :d'abord la plage, puis l'union.
  4. Vous pouvez également effectuer des types de traitement similaires entièrement côté serveur avec des scripts Lua.

EDIT :clarifications supplémentaires

Concernant. 1 - La fusion peut être effectuée côté client sur les résultats que vous obtenez de ZRANGEBYSCORE ou vous pouvez utiliser des scripts Lua côté serveur pour le faire. Utilisez le WITHSCORES pour obtenir l'horodatage et fusionner/trier dessus. Quel que soit votre choix d'emplacement pour exécuter ce code (j'utiliserais probablement Lua pour la localité des données), l'implémentation dépend de vous - lmk si vous avez besoin d'aide pour cela :)