实战1 登录cookie信息存储
用户将用户的访问时长和已浏览商品数量等信息存储起来便于后期通过分析这些信息来更好的向用户推销商品
1)首先使用一个散列来存储登录cookie令牌与已登录用户之间的映射,在用户登录的情况下根据给定的令牌来查找与之对应的用户返回用户的id
2)用户每次浏览页面,程序都会对用户存储在登录散列里的信息进行更新,并将用户的令牌和当前时间戳添加到记录最近登录用户的有序集合里
3)若用户正在浏览的是一个商品页面,则程序还会将这个商品添加到记录这个用户最近浏览过的商品的有序集合里并在被记录商品的数量超过10个时对这个有序集合进行修剪
我们记录用户最后一次浏览商品的时间及用户最近浏览了哪些商品
4)因为存储会话数据所需内存会随着时间的推移而不断增加,所以需要定期清理旧的会话数据,为了限制会话数据的数量,我们决定只保存最新的1000万个会话
/**
* 检查登录cookie
* @param $token
* @return mixed
*/
function checkLogin($token)
{
return $this->conn->hGet('login:',$token);
}
/**
* 更新登录信息
* @param $token
* @param $user
*/
function updateToken($key, $val, $item = null)
{
$this->conn->hSet('login:',$key,$val);
$this->conn->zAdd('recent:',$key,time());
if(!empty($item)){
$this->conn->zAdd('viewed:'.$key,$item,time());
//移除旧的记录,只保留用户最新访问的五个商品
$this->conn->zREMRANGEBYRANK('viewed:'.$key,0,-6);
}
return true;
}