/**
* 获取当天某个产品中用户的交易数量
* @param $pid 产品编号
* @param $uid 会员编号
* @return mixed
*/
public function getCountForDayUid($pid,$uid){
$key = $this->cacheZsetDayKey[0].$pid;
if( $this->redis && ($this->redis->exists($key)) ){
$count = $this->redis->zscore($key,$uid);
$count=$count>0?$count:0;
}else{
$expireTime=strtotime("today")+60*60*24;
$openSqlWhere ='status=1 and p_id='.$pid.' and uid='.$uid.' and createtime>='.strtotime("today").' and createtime<='.$expireTime;
$count = $this->model->where($openSqlWhere)->count();
$this->redis->zadd($key,$count,$uid);
//每天0点清楚前天记录数
$this->redis->EXPIREAT($key,$expireTime);
}
return $count;
}
/**
* 增加当天某个产品中用户的成功交易数
* @param $pid 产品编号
* @param $uid
* @param int $ct 交易个数
* @return bool
*/
public function addCountForDayUid($pid,$uid,$ct=1){
if($this->redis && isset($uid) && isset($pid) && $ct >0){
$key = $this->cacheZsetDayKey[0].$pid;
$this->redis->ZINCRBY($key,$ct,$uid);
//每天0点清楚前天记录数
$expireTime=strtotime("today")+60*60*24;
$this->redis->EXPIREAT($key,$expireTime);
return true;
}else{
return false;
}
}
=============================================================================
private $cacheZsetDefJifenUidKey = array('jifen:zset:jifenshopprecord_defjf_uid:', 86400);//消耗积分的所有订单id (所有兑换完成的,所有中奖的+所有未中奖的)
/**
* 保存便有扣积分的订单编号 {有:兑换成功的;抽奖全部}
* @param $uid
* @param $rid
* @return bool
*/
public function addZsetDefJifenUidKey($uid,$rid){
if($this->redis && isset($uid) && isset($rid)){
$key = $this->cacheZsetDefJifenUidKey[0].$uid;
//判断数据是否已过期
if(!$this->redis->exists($key)){
$this->getListForDefJf($uid,strtotime("-3 month"));
}
$this->redis->zAdd($key,time(),$rid);
$this->redis->EXPIRE($key,$this->cacheZsetDefJifenUidKey[1]);
}else{
return false;
}
return true;
}
/**
$idArray=$this->jifenShopRecordModel->getListForDefJf($this->uid,strtotime("-3 month"), '+inf', array($pageSize*($page-1),10));
*获取某个用户下 所有扣积分的订单id [兑换成功的,所有抽奖的]
* @param $uid
* @param int $start 开始日期
* @param $end 结束日期
* @param $limit=array($start,count)
* @return mixed
*/
public function getListForDefJf($uid,$start,$end='+inf',$limit=array()){
if($start<1){
return false;
}
$key = $this->cacheZsetDefJifenUidKey[0].$uid;
if( $this->redis && ($this->redis->exists($key)) ){
$return =$this->redis->zRevRangeByScore($key,$end,$start,array('limit'=>$limit));
}else{
$sqlWhere ='uid='.$uid.' AND ((TYPE=1 AND STATUS=1) OR (TYPE=2 ) )';
$result = $this->model->field('id,createtime')->where($sqlWhere)->order('id desc')->select();
if($result && $this->redis){
foreach($result as $k=>$v){
$this->redis->zAdd($key,$v['createtime'],$v['id']);
}
$this->redis->EXPIRE($key,$this->cacheZsetDefJifenUidKey[1]);
}else{
$result=array();
}
$end=(string)$end==='+inf'?time():$end;
$returnArray = array_slice($result,$limit[0],$limit[1]);
foreach($returnArray as $k=>$v){
if($v['createtime']>=$start && $v['createtime']<=$end ){
$return[$k]=$v['id'];
}
}
}
return $return;
}
获取当天某个产品中用户的交易数量redis 零点过期数据
最新推荐文章于 2023-03-10 12:44:06 发布