我正在编写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}}
ids 1,12和2425的用户正在查看此页面。如果{1: seconds}
在短时间内(例如30秒)没有更新,则必须从此项缓存中删除此项。前端定期更新缓存状态,这样可以防止用户关闭浏览器窗口。
可能有更好的方法在Redis中存储/获取此类信息(从item
映射到上次访问时间的用户列表。)
答案 0 :(得分:0)
您可以将item Id
作为键,值将是一个数组,您将推送任何更新(新访问)。
答案 1 :(得分:0)
您可以使用bitmaps。这很容易也很快。
您的url + timestamp
将成为关键,您可以为每次访问的userId将该位设置为1。
SETBIT '/item/35:timestamp' userId 1
然后你在这个密钥上做BITCOUNT
:
BITCOUNT '/item/35:timestamp'
您可以合并每日或每月的位数,并在页面上的每日,每月访问者上获得超快速分析。 Here is a nice article on this.