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

首頁 > 編程 > PHP > 正文

thinkphp+redis+隊列

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

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
日韩欧美有码在线| 欧美性受xxx| 91免费看片在线| 亚洲欧美在线免费观看| 亚洲国内高清视频| www.精品av.com| 亚洲毛片一区二区| 欧美日韩国产一区二区| 亚洲日本欧美中文幕| 性欧美xxxx| 91高清视频免费| 91免费精品国偷自产在线| 欧美一级片免费在线| 日本精品视频在线播放| 国产亚洲精品日韩| 亚洲人成毛片在线播放| 成人综合网网址| 久久久久久亚洲| 国产美女扒开尿口久久久| 日韩电影在线观看永久视频免费网站| 欧美成人在线影院| 日韩精品视频观看| 欧美日韩爱爱视频| 久久成人18免费网站| 国产视频精品自拍| 国产精品男女猛烈高潮激情| 91在线视频精品| 日韩激情视频在线播放| 日本高清久久天堂| 91九色国产视频| 国产精品亚洲аv天堂网| 国产精品午夜视频| 91系列在线观看| 色综合91久久精品中文字幕| 亚洲毛片在线免费观看| 中文字幕av一区中文字幕天堂| 91国产美女在线观看| 国产精品日韩欧美大师| 国产欧美精品久久久| 日韩欧美精品网站| 亚洲va欧美va在线观看| 国产裸体写真av一区二区| 精品女厕一区二区三区| 国产精品h在线观看| 97国产真实伦对白精彩视频8| 国产成人精品电影| 欧洲亚洲女同hd| 91精品久久久久久久久久| 精品动漫一区二区| 国产在线高清精品| 在线观看视频亚洲| 欧美黑人极品猛少妇色xxxxx| 91久久精品久久国产性色也91| 国产亚洲美女精品久久久| 中文字幕亚洲欧美日韩高清| 91精品久久久久久久| 日韩欧美成人区| 亚洲天堂av女优| 国产精品一二区| 成人欧美一区二区三区黑人孕妇| 欧美在线影院在线视频| 久久精品一区中文字幕| 成人黄色影片在线| 成人精品视频久久久久| 最近免费中文字幕视频2019| 久久精品青青大伊人av| 成人乱色短篇合集| 亚洲国产精品电影在线观看| 欧美性猛交xxxx久久久| 日韩少妇与小伙激情| 国产精品久久久久久久久久新婚| 欧美日韩亚洲高清| 中文字幕亚洲专区| 亚洲精品国产拍免费91在线| 久久久国产精品x99av| 91精品国产91| 国产精品av在线播放| 亚洲天堂网在线观看| 精品中文字幕乱| 亲爱的老师9免费观看全集电视剧| 中文字幕久热精品在线视频| 国产精品成人免费视频| 欧美丝袜第一区| 午夜免费在线观看精品视频| 在线成人激情黄色| 美女啪啪无遮挡免费久久网站| 精品中文字幕在线| 国产日产欧美a一级在线| 2020欧美日韩在线视频| 久久久999国产精品| 国产精品十八以下禁看| 亚洲欧美中文日韩v在线观看| 亚洲小视频在线观看| 国产精品草莓在线免费观看| 国产这里只有精品| 日韩精品久久久久久久玫瑰园| 国产成人精品视频在线| 曰本色欧美视频在线| 亚洲精品中文字幕女同| 日韩欧美主播在线| 亚洲国产精品久久精品怡红院| 色偷偷综合社区| 亚洲第五色综合网| 91九色精品视频| 国产精品久久综合av爱欲tv| 亚洲一区二区免费在线| 成人h视频在线观看播放| 2019av中文字幕| 欧美日韩在线一区| 国产精品久久久久久久久久久久| 欧美另类交人妖| 91中文精品字幕在线视频| 久久精品久久久久| 精品视频偷偷看在线观看| 亚洲欧美综合区自拍另类| 久久久av亚洲男天堂| 国产精品爽爽爽爽爽爽在线观看| 久久久久久伊人| 国产精品国产三级国产aⅴ9色| 精品成人久久av| 日韩精品亚洲精品| 不卡中文字幕av| 久久精彩免费视频| 欧美成人精品在线视频| 亚洲欧美国产日韩天堂区| 亚洲成人精品视频| 国产亚洲福利一区| 91av视频导航| 高清欧美电影在线| 国产精品美女免费| 欧美亚洲免费电影| 国产欧美一区二区三区久久| 成人高清视频观看www| 久久综合亚洲社区| 中文字幕一精品亚洲无线一区| 久久黄色av网站| 欧美性xxxx极品hd满灌| 国产98色在线| 国产欧美在线视频| 欧美另类极品videosbest最新版本| 欧美大片在线看免费观看| 狠狠久久亚洲欧美专区| 色偷偷av一区二区三区乱| 成人在线一区二区| 日韩国产高清视频在线| 欧美性猛交99久久久久99按摩| 国产精品老牛影院在线观看| 国产精品免费一区| 中文字幕精品一区久久久久| 日韩天堂在线视频| 国产一区二区三区中文| 国产色婷婷国产综合在线理论片a| 欧美日韩裸体免费视频| 日韩精品欧美国产精品忘忧草| 97视频免费观看| 久久资源免费视频| 亚洲美女性生活视频| 国产成人亚洲综合青青| 亚洲毛片在线免费观看| 裸体女人亚洲精品一区| 欧美另类69精品久久久久9999| 成人免费网视频| 中文国产成人精品久久一| 久久久久一本一区二区青青蜜月|