【发布时间】:2017-08-29 05:18:28
【问题描述】:
我正在编写 laravel 应用程序,我想在其中向当前用户显示页面上的所有其他用户。
我想用Redis来存储这种信息,所以比如用户1访问页面/item/35,那么Redis必须保存这个信息:
{'/item/35': {1: last_visit_time_in_seconds}}
last_visit_time_in_seconds 是 unixtimestamp。
如果另外两个用户访问同一个页面,那么 Redis 将包含:
{'/item/35': {1: seconds}, {12: seconds}, {2425: seconds}}
ID 为 1、12 和 2425 的用户正在查看此页面。如果在短时间内(如 30 秒)没有更新 {1: seconds},则必须从该项目缓存中删除该项目。前端会定期更新缓存状态,这样可以防止用户关闭浏览器窗口。
在 Redis 中可能有更好的方法来存储/获取此类信息(从 item 映射到具有上次访问时间的用户列表)。
【问题讨论】:
-
google 存在渠道和 websockets,我猜它会有所帮助
-
无论如何,信息都是通过 websockets 传递的。 Questiong 是关于如何在后端存储这些信息。