sql >> Database >  >> NoSQL >> Redis

Meldings- en nieuwsgedeelte met behulp van Redis

Naar mijn mening moet deze functie aan de serverzijde worden afgehandeld, vooral als u verwacht dat gebruikers meerdere typen clients gebruiken (bijv. browser, telefoon, enz.)

Elk van uw gebeurtenissen moet een tijdstempel hebben om te weten wanneer elke gebeurtenis heeft plaatsgevonden en om dienovereenkomstig te kunnen zoeken in het bereik, voor het geval u bijvoorbeeld de laatste 24 uur van gebeurtenissen of gebeurtenissen na tijdstempel X moet zien.

Wanneer de gebruiker die een andere gebruiker volgt haar meldingen bekijkt, kun je een tijdstempel instellen als controlepunt om te weten tot welke gebeurtenis deze gebruiker al heeft gezien en dan alleen de gebeurtenissen weergeven die na dat controlepunt liggen.

De manier waarop ik tijdreeksen in REDIS in een van onze projecten heb geïmplementeerd, is door Sorted Sets te gebruiken (http://redis.io/topics/data-types#sorted-sets). In jouw geval zou je kunnen opslaan:

user1EventsKey -> [{ts1, eventKey1}, {ts2, eventKey2}, {ts3, eventKey3},... ]  
                                                           # This is the sorted set
eventKey1 -> [photo1, photo2, photo3]
eventKey2 -> [photo4, photo5]
...

user2Checkpoint -> tsA   #where  ts2 < tsA < ts3

Nu weet je dat de volgende keer dat user2 de meldingen bekijkt, je alleen de gebeurtenissen na tsA zult laten zien met behulp van ZRANGEBYSCORE user1EventsKey ts2 +inf om alle gebeurtenissleutels te krijgen en vervolgens kunt u de gebeurtenissen één voor één weergeven.

ps. De tijdstempel kan worden opgeslagen in het UNIX-formaat.

Ik hoop dat dit helpt.




  1. Is er een manier om met sessies te werken zonder de ASP.Net MVC-site te vergrendelen?

  2. Redis:Is ZADD beter dan O(logN) wanneer het ingevoegde element aan het begin of het einde staat?

  3. Native MongoDB-maskering (3e methode)

  4. Hoe unie-query's in mongoDB te schrijven?