sql >> Database teknologi >  >> NoSQL >> Redis

Notifikations- og nyhedsområde ved at bruge Redis

Efter min mening bør denne funktion håndteres på serversiden, især hvis du forventer, at brugerne bruger flere typer klienter (f.eks. browser, telefon osv.)

Hver af dine begivenheder skal have et tidsstempel for at vide, hvornår hver begivenhed fandt sted, og for at kunne udføre rækkeviddesøgninger i overensstemmelse hermed, i tilfælde af at du har brug for at få, for eksempel de sidste 24 timers begivenheder, eller begivenheder efter tidsstemplet X.

Så når brugeren, der følger en anden bruger, ser på hendes meddelelser, kan du indstille et tidsstempel som et kontrolpunkt for at vide op til, hvilken hændelse denne bruger allerede har set, og så kun vise de hændelser, der er efter det pågældende kontrolpunkt.

Den måde, jeg har implementeret tidsserier i REDIS i et af vores projekter, er ved at bruge Sorted Sets (http://redis.io/topics/data-types#sorted-sets). I dit tilfælde kan du gemme:

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 ved du, at næste gang bruger2 ser notifikationerne, vil du kun vise de begivenheder, der er efter tsA ved hjælp af ZRANGEBYSCORE user1EventsKey ts2 +inf for at få alle begivenhedsnøglerne og derefter en efter en kan du vise begivenhederne.

PS. Tidsstemplet kan gemmes i UNIX-formatet.

Jeg håber, at dette hjælper.




  1. MongoDB vælg count (distinct x) på en indekseret kolonne - tæl unikke resultater for store datasæt

  2. Sådan bruger du MongoDB Stitch i Android-apps

  3. Samtidighed i gopkg.in/mgo.v2 (Mongo, Go)

  4. Vil du dele sessioner med redis og pas på et underdomæne?