sql >> Databasteknik >  >> NoSQL >> Redis

Aviserings- och nyhetsområde genom att använda Redis

Enligt min åsikt bör denna funktion hanteras på serversidan, speciellt om du förväntar dig att användare ska använda flera typer av klienter (t.ex. webbläsare, telefon etc.)

Var och en av dina händelser bör ha en tidsstämpel för att veta när varje händelse inträffade och för att kunna göra intervallsökningar i enlighet med detta, i fall du behöver få, till exempel de senaste 24 timmarna av händelser, eller händelser efter tidsstämpel X.

Sedan när användaren som följer en annan användare tittar på hennes aviseringar kan du ställa in en tidsstämpel som en kontrollpunkt för att veta fram till vilken händelse denna användare redan har sett och sedan bara visa de händelser som ligger efter den kontrollpunkten.

Sättet jag har implementerat tidsserier i REDIS i ett av våra projekt är genom att använda Sorterade uppsättningar (http://redis.io/topics/data-types#sorted-sets). I ditt fall kan du lagra:

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 vet du att nästa gång användare2 ser aviseringarna kommer du bara att visa de händelser som är efter tsA med ZRANGEBYSCORE user1EventsKey ts2 +inf för att få alla händelsenycklar och sedan en efter en kan du visa händelserna.

PS. Tidsstämpeln kan lagras i UNIX-format.

Jag hoppas att detta hjälper.




  1. Hur man tappar index med Mongoose

  2. MongoDB-fråga med ett "eller"-villkor

  3. Antalet utgående nycklar listade av infokommandot på redis-slaven överensstämmer inte med vad jag ser

  4. MongoDB $setOnInsert