sql >> Base de Datos >  >> NoSQL >> Redis

Área de notificaciones y noticias usando Redis

En mi opinión, esta función debe manejarse del lado del servidor, especialmente si espera que los usuarios usen varios tipos de clientes (por ejemplo, navegador, teléfono, etc.)

Cada uno de sus eventos debe tener una marca de tiempo para saber cuándo ocurrió cada evento y para poder realizar búsquedas de rango en consecuencia, en caso de que necesite obtener, por ejemplo, las últimas 24 horas de eventos o eventos posteriores a la marca de tiempo X.

Luego, cuando el usuario que sigue a otro usuario mira sus notificaciones, puede establecer una marca de tiempo como punto de control para saber hasta qué evento ha visto este usuario y luego solo mostrar los eventos que están después de ese punto de control.

La forma en que implementé series de tiempo en REDIS en uno de nuestros proyectos es usando conjuntos ordenados (http://redis.io/topics/data-types#sorted-sets). En su caso podría almacenar:

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

Ahora sabe que la próxima vez que usuario2 vea las notificaciones, solo mostrará los eventos que estén después de tsA usando ZRANGEBYSCORE user1EventsKey ts2 +inf para obtener todas las claves de eventos y luego, uno por uno, puede mostrar los eventos.

PD. La marca de tiempo se puede almacenar en formato UNIX.

Espero que esto ayude.