Theo ý kiến của tôi, chức năng này nên được xử lý ở phía máy chủ, đặc biệt nếu bạn muốn người dùng sử dụng nhiều loại máy khách (ví dụ:trình duyệt, điện thoại, v.v.)
Mỗi sự kiện của bạn phải có một dấu thời gian để biết khi nào mỗi sự kiện đã xảy ra và để có thể thực hiện tìm kiếm theo phạm vi cho phù hợp, trong trường hợp bạn cần lấy, chẳng hạn như 24 giờ qua của sự kiện hoặc sự kiện sau dấu thời gian X.
Sau đó, khi người dùng theo dõi người dùng khác xem thông báo của họ, bạn có thể đặt dấu thời gian làm điểm kiểm tra để biết người dùng này đã xem sự kiện nào và sau đó chỉ hiển thị các sự kiện sau điểm kiểm tra đó.
Cách tôi đã triển khai thời gian biểu trong REDIS trong một trong các dự án của chúng tôi là sử dụng Bộ phân loại (http://redis.io/topics/data-types#sorted-sets). Trong trường hợp của bạn, bạn có thể lưu trữ:
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
Bây giờ bạn biết rằng lần sau khi user2 xem thông báo, bạn sẽ chỉ hiển thị bất kỳ sự kiện nào diễn ra sau tsA bằng cách sử dụng ZRANGEBYSCORE user1EventsKey ts2 +inf
để nhận tất cả các khóa sự kiện và sau đó từng khóa một, bạn có thể hiển thị các sự kiện.
Tái bút. Dấu thời gian có thể được lưu trữ ở định dạng UNIX.
Tôi hy vọng điều này sẽ hữu ích.