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

Area Notifiche e News tramite Redis

A mio avviso questa funzione dovrebbe essere gestita lato server, soprattutto se si prevede che gli utenti utilizzino più tipi di client (es. browser, telefono ecc.)

Ciascuno dei tuoi eventi dovrebbe avere un timestamp per sapere quando si è verificato ogni evento e per poter eseguire ricerche di intervallo di conseguenza, nel caso in cui sia necessario ottenere, ad esempio, le ultime 24 ore di eventi o eventi dopo il timestamp X.

Quindi, quando l'utente che segue un altro utente guarda le sue notifiche, puoi impostare un timestamp come checkpoint per sapere fino a quale evento questo utente ha già visto e quindi mostrare solo gli eventi che si trovano dopo quel checkpoint.

Il modo in cui ho implementato le serie temporali in REDIS in uno dei nostri progetti è usando i set ordinati (http://redis.io/topics/data-types#sorted-sets). Nel tuo caso potresti memorizzare:

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

Ora sai che la prossima volta che user2 visualizzerà le notifiche, mostrerai solo tutti gli eventi dopo tsA usando ZRANGEBYSCORE user1EventsKey ts2 +inf per ottenere tutte le chiavi degli eventi e poi uno per uno puoi visualizzare gli eventi.

PS. Il timestamp può essere memorizzato nel formato UNIX.

Spero che questo aiuti.