基于redis的自增长计数器,生成自增长数字

浏览:7378 发布日期:2016/07/15 分类:功能实现 关键字: thinkphp redis incr_num
基于redis的自增长计数器,生成自增长数字
/**
 * 生成自增长数字
 *
 * @param string $key 缓存key
 * @param int $step 自增长步长
 * @param int $expires 缓存过期时间,默认当天有效,单位秒
 *
 * @return int $num;
 * @author leeyi <leeyisoft@qq.com>
 */
function incr_num($key = 'ddg', $step = 1, $expires = 0) {
    $redis     = new \Org\DDG\Redis();
    $cache_key = 'incrnum:'.$key.'_setp:'.$step;
    $num       = $redis->handler->incrBy($cache_key, (int)$step);

    if ($expires>0) {
        $pexpire     = 'pexpire';
        $millisecond = $expires*1000;
    } else {
        $pexpire     = 'pexpireAt';
        $millisecond = get_time_235959()*1000+999;
    }
    if (2>$num) {
        $redis->handler->$pexpire($cache_key, $millisecond); // 设置过期时间
    }

    return $num;
}


/**
 * 根据给定时间戳,获取当天时间最后一秒的时间戳
 * @author leeyi <leeyisoft@qq.com>
 */
function get_time_235959($time = '') {
    $time = empty($time) ? NOW_TIME : intval($time);
    return strtotime(date('Y-m-d 00:00:00', $time+86400))-1;
}
评论( 相关
后面还有条评论,点击查看>>