public function redisConnect()
{
$redis = new redis();
$redis->connect('***', 6379);
$redis->auth('***');
$redis->select(6);
return $redis;
}
public function rediaGetData($uid)
{
$redis = $this->redisConnect();
if($uid == 0){
if($redis->exists('visitor_info_id')) { //如果存在游客键
$string = $redis->hGet('visitor_info_id','new_ids');
$array = json_decode($string);
$total = count($array);
$page = (int)$redis->hGet('visitor_info_id','count');
if($total == 0 || ($page%$total == 0 && $page !=0)){ //说明取完一轮数据 需要算法重新生成新数据
$redis->hSet('visitor_info_id','count',0);
$redis->publish('p_user_id','visitor_info_id');//发布出去
$id = $this->redisCommon();
}
else{
$id = $array[$page];
$redis->hSet('visitor_info_id','count',$page+1);
}
}
else{ //如果不存在游客键
$redis->publish('p_user_id','visitor_info_id');//发布出去
$id = $this->redisCommon();//读取公共数据
}
}
else{
if($redis->exists($uid)) { //如果存在这个用户的资料
$string = $redis->hGet($uid,'new_ids');
$array = json_decode($string);
$total = count($array);
$page = (int)$redis->hGet($uid,'count');
if($total == 0 || ($page%$total == 0 && $page !=0)){ //说明取完一轮数据 需要算法重新生成新数据
$redis->hSet($uid,'count',0);
$redis->publish('p_user_id',$uid);//发布出去
$id = $this->redisCommon();
}
else{
$id = $array[$page];
$redis->hSet($uid,'count',$page+1);
}
}
else{ //如果不存在这个用户的资料
$redis->publish('p_user_id',$uid);//发布出去
$id = $this->redisCommon();
}
}
$result = $this->db->from('information')
->where_in('id',$id)
->order_by("rand()")
->get()
->result_array();
return $result;
}
public function redisCommon($page = 5)
{
$redis = $this->redisConnect();
$page = (int)$redis->hGet('common','count');
$string = $redis->hGet('common','new_ids');
$array = json_decode($string);
if(count($array) < $page) {
$redis->hSet('common', 'count', 0);
$page = 5;
}
else
$redis->hSet('common', 'count', $page + 1);
$id = $array[$page];
return $id;
}