/***
*
* 计算在线用户
*/
public function actionOnline(){
$dd = Yii::$app->redis;
$prefix_key = "online".'0253';
$cy = $dd->SMEMBERS($prefix_key);
//var_dump(count($cy));
$time = time();
$stime = $time-60*60; //相差5分钟
$etime = $time;
$stime = date("hi",$stime);
$etime = date("hi",$etime);
$num = $this->userNum($stime,$etime);
var_dump($stime,$etime);
var_dump($num);exit;
}
/**
* 获取在线用户数
* @param $start_min 统计开始分钟 hi格式
* @param $end_min 统计结束的分钟
* @return mixed
*/
public function userNum($start_min, $end_min)
{
$dd = Yii::$app->redis;
$prefix_key = "online0"; //key前缀
//遍历时间区间内所有的分钟,并放入到参数中
$n="";num =0;
for ($min=$start_min;$min <=$end_min;$min++){
$params = $prefix_key.$min;
$cy = $dd->SMEMBERS($params);
if($cy){
$num =count($cy);
$n[] =$num;
}
}
if($n){
$num = array_sum($n);
}
return $num;
}
/**
* 每分钟百万用户,实时统计最近15分钟在线用户总数
* 往集合中添加新的在线用户
* @param $uid
*/
public function actionAdduser(){
echo date('hi');
$uid = 'AAA'.time();
$prefix_key = "online";//key前缀
$dd = Yii::$app->redis;
$dd->SADD($prefix_key .date('hi'), $uid);
}
redis 实现最近20分钟在线人数统计
于 2022-02-18 15:12:37 首次发布
本文介绍如何利用Redis的数据结构与特性,高效地统计过去20分钟内的在线用户数量,通过键的设计和过期时间设置,实现动态更新和实时查询。
1019

被折叠的 条评论
为什么被折叠?



