768   Redis

示例代码

// 用户ID
$id = 1;
// 在线失效时间,即10分钟后用户没有任何操作,表示不在线了
$time = 10*60;
// 保存用户在线记录,以分钟为单位
$bitmap = 'online_'.date("Hi"); 
$redis->setBit($bitmap,$id,1);
// 设置失效时间
$redis->setTimeout($bitmap,$time);


$bitop_param[] = 'or';
$bitop_param[] = 'online';
// 统计2分钟内在线人数,也可是设置为4,5分钟等
for($i = 0;$i < 2;$i++){ $bitop_param[] = 'online_'.date('Hi',time()-60*$i); } // 利用bitOp将多个在线记录的bitmap合并成一个,并保存到临时的bitmap中 call_user_func_array([$redis, "bitOp"], $bitop_param); // 统计总的用户在线记录 $online = $redis->bitCount($bitop_param[1]);
// 删除临时统计的bitmap
$redis->delete($bitop_param[1]);




Leave a Reply

Your email address will not be published. Required fields are marked *