sql >> Database >  >> NoSQL >> Redis

Hoe de gesorteerde sets Redis combineren?

Er zijn een aantal manieren om dit te doen, maar de juiste hangt af van wat je probeert te doen. Bijvoorbeeld:

  1. U kunt ZRANGEBYSCORE (of ZREVRANGEBYSCORE) gebruiken in uw code voor elke FEED:USER:n toets en "samenvoegen" de antwoorden in de client
  2. Je kunt een ZUNIONSTORE doen op de relevante toetsen en vervolgens de ZRANGEBYSCORE doen op het resultaat van de client.
  3. Als uw "feeds" echter groot zijn, moet de stroom van #2 worden omgekeerd - eerst bereik en dan unie.
  4. Je zou soortgelijke soorten verwerking ook volledig server-side kunnen doen met wat Lua-scripting.

EDIT:verdere verduidelijkingen

Met betrekking tot. 1 - Samenvoegen kan aan de clientzijde worden gedaan op de resultaten die u van ZRANGEBYSCORE krijgt, of u kunt Lua-scripts aan de serverzijde gebruiken om dat te doen. Gebruik de WITHSCORES om de tijdstempel te krijgen en deze samen te voegen/sorteren. Ongeacht de locatie die je hebt gekozen om deze code uit te voeren (ik zou waarschijnlijk Lua gebruiken voor gegevenslocatie), de implementatie is aan jou - als je daar hulp bij nodig hebt :)




  1. Pipelining versus batching in Stackexchange.Redis

  2. Operationele factoren om te overwegen tijdens MongoDB-gegevensmodellering

  3. MongoDB-voorvoegsel-jokerteken:fulltext-search ($ tekst) deel vinden met zoekstring

  4. Wat is het nut van REDIS in ELK-stack?