亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

thinkphp+redis+隊列

2019-11-10 17:46:07
字體:
來源:轉載
供稿:網友

1,安裝redis,根據自己的php版本安裝對應的redis擴展(此步驟簡單的描述一下)

  1.1,安裝 php_igbinary.dll,php_redis.dll擴展此處需要注意你的php版本如圖:

  

  1.2,php.ini文件新增 extension=php_igbinary.dll;extension=php_redis.dll兩處擴展

ok此處已經完成第一步redis環境搭建完成看看phpinfo

項目中實際使用redis

  2.1,第一步配置redis參數如下,redis安裝的默認端口為6379: 

1234567891011121314<?php/* 數據庫配置 */return array(    'DATA_CACHE_ => 'Redis_',//緩存前綴    'DATA_CACHE_TYPE'=>'Redis',//默認動態緩存為Redis    'DATA_CACHE_TIMEOUT' => false,    'REDIS_RW_SEPARATE' => true, //Redis讀寫分離 true 開啟    'REDIS_HOST'=>'127.0.0.1'//redis服務器ip,多臺用逗號隔開;讀寫分離開啟時,第一臺負責寫,其它[隨機]負責讀;    'REDIS_PORT'=>'6379',//端口號    'REDIS_TIMEOUT'=>'300',//超時時間    'REDIS_PERSISTENT'=>false,//是否長連接 false=短連接    'REDIS_AUTH'=>'',//AUTH認證密碼 );?>

  2.2,實際函數中使用redis:

1234567891011/**        * redis連接        * @access private        * @return resource        * @author bieanju        */    private function connectRedis(){        $redis=new /Redis();        $redis->connect(C("REDIS_HOST"),C("REDIS_PORT"));               return $redis;    }

  2.3,秒殺的核心問題是在大并發的情況下不會超出庫存的購買,這個就是處理的關鍵所以思路是第一步在秒殺類的先做一些基礎的數據生成:

1234567891011//現在初始化里面定義后邊要使用的redis參數public function _initialize(){        parent::_initialize();        $goods_id = I("goods_id",'0','intval');              if($goods_id){            $this->goods_id = $goods_id;            $this->user_queue_key = "goods_".$goods_id."_user";//當前商品隊列的用戶情況            $this->goods_number_key = "goods".$goods_id;//當前商品的庫存隊列        }        $this->user_id = $this->user_id ? $this->user_id : $_session['uid'];          }

  2.4,第二步就是關鍵所在,用戶在進入商品詳情頁前先將當前商品的庫存進行隊列存入redis如下:

123456789101112131415161718192021222324252627282930/**    * 訪問產品前先將當前產品庫存隊列    * @access public    * @author bieanju    */    public function _before_detail(){        $where['goods_id'] = $this->goods_id;        $where['start_time'] = array("lt",time());        $where['end_time'] =  array("gt",time());        $goods = M("goods")->where($where)->field('goods_num,start_time,end_time')->find();        !$goods && $this->error("當前秒殺已結束!");        if($goods['goods_num'] > $goods['order_num']){            $redis $this->connectRedis();            $getUserRedis $redis->hGetAll("{$this->user_queue_key}");            $gnRedis $redis->llen("{$this->goods_number_key}");            /* 如果沒有會員進來隊列庫存 */            if(!count($getUserRedis) && !$gnRedis){                            for ($i = 0; $i $goods['goods_num']; $i ++) {                    $redis->lpush("{$this->goods_number_key}", 1);                }            }            $resetRedis $redis->llen("{$this->goods_number_key}");            if(!$resetRedis){                $this->error("系統繁忙,請稍后搶購!");            }        }else{            $this->error("當前產品已經秒殺完!");        }             }

  接下來要做的就是用Ajax來異步的處理用戶點擊購買按鈕進行符合條件的數據進入購買的排隊隊列(如果當前用戶沒在當前產品用戶的隊列就進入排隊并且pop一個庫存隊列,如果在就拋出,):

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849/**     * 搶購商品前處理當前會員是否進入隊列     * @access public     * @author bieanju     */    public function goods_number_queue(){        !$this->user_id && $this->ajaxReturn(array("status" => "-1","msg" => "請先登錄"));        $model = M("Flash_sale");        $where['goods_id'] = $this->goods_id;        $goods_info $model->where($where)->find();        !$goods_info && $this->error("對不起當前商品不存在或已下架!");         /* redis 隊列 */          $redis $this->connectRedis();        /* 進入隊列  */        $goods_number_key $redis->llen("{$this->goods_number_key}");        if (!$redis->hGet("{$this->user_queue_key}"$this->user_id)) {            $goods_number_key $redis->lpop("{$this->goods_number_key}");        }                 if($goods_number_key){            // 判斷用戶是否已在隊列            if (!$redis->hGet("{$this->user_queue_key}"$this->user_id)) {                // 插入搶購用戶信息                $userinfo array(                    "user_id" => $this->user_id,                    "create_time" => time()                );                               $redis->hSet("{$this->user_queue_key}"$this->user_id, serialize($userinfo));                $this->ajaxReturn(array("status" => "1"));            }else{                $modelCart = M("cart");                $condition['user_id'] = $this->user_id;                $condition['goods_id'] = $this->goods_id;                $condition['prom_type'] = 1;        $cartlist $modelCart->where($condition)->count();                if($cartlist > 0){                    $this->ajaxReturn(array("status" => "2"));                }else{                                     $this->ajaxReturn(array("status" => "1"));                                  }                             }                     }else{            $this->ajaxReturn(array("status" => "-1","msg" => "系統繁忙,請重試!"));        }    }

  附加一個調試的函數,刪除指定隊列值:

1234567891011121314public function clearRedis(){         set_time_limit(0);         $redis $this->connectRedis();         //$Rd = $redis->del("{$this->user_queue_key}");         $Rd $redis->hDel("goods49",'用戶id'');         $a $redis->hGet("goods_49_user"'用戶id');         if(!$a){             dump($a);         }                  if($Rd == 0){              exit("Redis隊列已釋放!");                    }     }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久秋霞鲁丝| 国产精品成人免费视频| 青青草99啪国产免费| 欧美福利视频网站| 91亚洲国产成人精品性色| 色综合五月天导航| 日韩福利伦理影院免费| 欧美在线一区二区视频| 在线看日韩av| 538国产精品视频一区二区| 51色欧美片视频在线观看| 精品呦交小u女在线| 欧美午夜精品久久久久久人妖| 日韩av中文字幕在线播放| 国产欧美中文字幕| 成人性生交大片免费看视频直播| 欧美午夜片在线免费观看| 这里只有精品在线播放| 日韩亚洲欧美中文在线| 国产在线观看精品| 亚洲女人天堂av| 美女撒尿一区二区三区| 亚洲va欧美va国产综合久久| 亚洲天堂男人的天堂| 国产亚洲精品久久久久久牛牛| 日韩精品亚洲精品| 中日韩美女免费视频网址在线观看| 国产精品自产拍高潮在线观看| 91po在线观看91精品国产性色| 国产精品视频一区二区三区四| 国产精品久久久久免费a∨大胸| 一区二区日韩精品| 91久久久亚洲精品| 久久久久久久久久久成人| 亚洲xxx视频| 亚洲综合小说区| 国产一区二区三区在线观看网站| 欧美最猛性xxxx| 久久久亚洲影院| 欧美性猛交丰臀xxxxx网站| 日韩在线观看av| 欧美激情视频网址| 亚洲激情视频在线播放| 在线观看国产欧美| 亚洲天堂av图片| 亚洲网在线观看| 精品久久中文字幕久久av| 91麻豆国产语对白在线观看| 欧美日韩国产色视频| 久久久久国产视频| 亚洲jizzjizz日本少妇| 欧美极度另类性三渗透| 国产精品v片在线观看不卡| 欧美国产日韩一区二区| 日韩精品视频免费专区在线播放| 青草青草久热精品视频在线观看| 亚洲免费伊人电影在线观看av| 欧美日韩亚洲一区二| 欧美精品成人在线| 日韩在线精品视频| 欧美在线亚洲在线| 亚洲男人天堂九九视频| 欧美性高潮在线| 亚洲天堂第二页| 久久亚洲精品一区| 国产专区欧美专区| 国产精品日韩在线播放| 亚洲乱码国产乱码精品精天堂| 国产精品白丝av嫩草影院| 欧美精品精品精品精品免费| 欧美激情国产日韩精品一区18| 欧美大人香蕉在线| 欧美裸体xxxx极品少妇软件| 欧美国产亚洲精品久久久8v| 在线播放日韩欧美| 亚洲精品白浆高清久久久久久| 国产在线精品成人一区二区三区| 国产69精品久久久久9999| 亚洲乱码国产乱码精品精天堂| 亚洲色图色老头| 97**国产露脸精品国产| 黑人与娇小精品av专区| 国产成人精品最新| 中文字幕日韩精品在线| 欧美亚洲国产日韩2020| 精品国产老师黑色丝袜高跟鞋| 亚洲aa在线观看| 日韩电影在线观看永久视频免费网站| 中文字幕一区二区精品| 亚洲大尺度美女在线| 国产精品欧美日韩一区二区| 欧美天天综合色影久久精品| 色小说视频一区| 日韩欧美成人免费视频| 一本色道久久88亚洲综合88| 久久久999国产精品| 久久人人97超碰精品888| 国产精品入口免费视| 欧美成人黑人xx视频免费观看| 欧美日韩在线影院| 成人日韩在线电影| 欧美在线观看日本一区| 国产精品福利在线观看网址| 午夜精品久久久99热福利| 精品精品国产国产自在线| 国产亚洲人成网站在线观看| 国外成人在线播放| 欧亚精品在线观看| 久久激情视频免费观看| 国产亚洲欧美日韩美女| 亚洲天堂av高清| 亚洲综合色激情五月| 91精品久久久久久久久久另类| 国产综合视频在线观看| 国产原创欧美精品| 亚洲黄色有码视频| 亚洲小视频在线观看| 韩日欧美一区二区| 久久久中精品2020中文| 欧美激情乱人伦| 午夜精品福利视频| 欧美在线视频观看| 久久久久这里只有精品| 国产精品久久综合av爱欲tv| 亚洲欧美三级在线| 国产91精品青草社区| 久久久久久久久国产精品| 国内精品小视频| 欧美性理论片在线观看片免费| 国产精品稀缺呦系列在线| 伊人青青综合网站| 久久中文字幕在线视频| 国产精品视频一区国模私拍| 精品久久久久久久久久ntr影视| 久久久国产影院| 国产偷亚洲偷欧美偷精品| 中文字幕亚洲无线码a| 久久99久久99精品中文字幕| 中文字幕欧美日韩精品| 在线电影欧美日韩一区二区私密| 欧美在线日韩在线| 成人精品网站在线观看| 中文字幕自拍vr一区二区三区| 欧美性xxxx在线播放| 亚洲欧美精品一区二区| 国产在线一区二区三区| 国产a∨精品一区二区三区不卡| 中文字幕不卡在线视频极品| 日韩av电影院| 欧美最顶级丰满的aⅴ艳星| 亚洲美女动态图120秒| 久久夜精品香蕉| 亚洲香蕉成视频在线观看| 日韩欧美精品免费在线| 欧美大片免费观看| 久久综合久中文字幕青草| 久久免费精品日本久久中文字幕| 欧美黑人巨大精品一区二区| 欧美激情亚洲国产| 精品二区三区线观看| 九九久久久久99精品| 日韩女在线观看| 57pao国产精品一区| 国产91色在线播放|