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

首頁 > 編程 > PHP > 正文

thinkphp+redis+隊列

2019-11-10 20:16:15
字體:
來源:轉載
供稿:網友

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
91色琪琪电影亚洲精品久久| 亚洲欧洲国产一区| 欧美在线日韩在线| 夜夜躁日日躁狠狠久久88av| 亚洲女人初尝黑人巨大| 国产精品第七影院| 9.1国产丝袜在线观看| 国产一区二区三区丝袜| 欧美午夜xxx| 久久不射电影网| 久久国产精品久久久久| 欧美激情视频一区二区三区不卡| 国产精品老女人视频| 最近2019年中文视频免费在线观看| 在线视频国产日韩| 国产精品爽黄69| 国产精品老女人精品视频| 日韩免费在线电影| 最新91在线视频| 国产精欧美一区二区三区| 国产91ⅴ在线精品免费观看| 日韩一区二区三区xxxx| 亚洲天堂免费在线| 精品网站999www| 国产精品久久久久久久久久东京| 日韩欧美高清视频| 欧美激情久久久久| 欧美综合国产精品久久丁香| 欧美老肥婆性猛交视频| 中文字幕欧美日韩| 久久99精品久久久久久青青91| 久久免费视频在线观看| 日韩在线观看免费网站| 正在播放亚洲1区| 777精品视频| 欧美在线影院在线视频| 国产亚洲一区精品| 亚洲欧美综合区自拍另类| 亚洲国产一区自拍| 亚洲国产成人久久| 欧美一级大胆视频| 日韩在线视频中文字幕| 亚洲第一页中文字幕| 国产第一区电影| 亚洲欧美激情四射在线日| 26uuu亚洲伊人春色| 九九热精品视频| 一区二区日韩精品| 日本成人黄色片| 亚洲精品国产精品久久清纯直播| 欧美日韩中文字幕综合视频| 国产在线精品成人一区二区三区| 亚洲国产精品推荐| 成人精品视频99在线观看免费| 欧美日韩日本国产| 国产精品久久久久久久美男| 91久久国产精品91久久性色| 国产精品丝袜一区二区三区| 91日本在线视频| 久久久久久久999精品视频| 91网站在线免费观看| 精品国产精品自拍| 亚洲男人天堂九九视频| 在线视频中文亚洲| 亚洲欧美日韩另类| 国产精品青青在线观看爽香蕉| 国产精品午夜一区二区欲梦| 日韩欧美国产成人| 国产专区精品视频| 欧美日韩免费一区| 欧美日韩亚洲成人| 69国产精品成人在线播放| 国产精品一区专区欧美日韩| 欧美日韩免费一区| 久久激情五月丁香伊人| 欧美日韩亚洲视频一区| 久久久亚洲影院你懂的| 97久久伊人激情网| 日韩专区中文字幕| 欧美小视频在线观看| 97久久伊人激情网| 亚洲国产第一页| 亚洲人成电影网| 日韩在线免费av| 亚洲黄色www| 日韩在线播放一区| 欧美日韩午夜剧场| 国产一区二区在线免费| 欧美黄网免费在线观看| 亚洲色无码播放| 亚洲日本成人女熟在线观看| 国产亚洲精品美女| 亚洲国产成人精品女人久久久| 欧美激情在线狂野欧美精品| 在线观看精品国产视频| 亚洲国产毛片完整版| 91av成人在线| 国产欧美日韩视频| 岛国视频午夜一区免费在线观看| 色偷偷噜噜噜亚洲男人的天堂| 国产精品久久久久久久久久三级| 国产精品欧美日韩| 中文字幕视频在线免费欧美日韩综合在线看| 久久精品99久久久香蕉| 国产精品99久久久久久www| 精品国产一区二区三区久久狼黑人| 色综合久久久久久中文网| 日韩欧美一区视频| 欧洲精品久久久| 亚洲成人1234| 久久影院模特热| 在线播放日韩精品| 美女国内精品自产拍在线播放| 亚洲成人亚洲激情| 国产精品自拍小视频| 欧美韩日一区二区| 亚洲精品一区二区在线| 亚洲精品资源美女情侣酒店| 国产午夜精品美女视频明星a级| 精品自拍视频在线观看| 亚洲欧美日本精品| 欧美一级高清免费播放| 亚洲人成电影网站色www| 国产欧美日韩精品专区| 久久久噜噜噜久久久| 久久久久久久一| 精品视频在线播放| 国产狼人综合免费视频| 草民午夜欧美限制a级福利片| 国产精品白丝jk喷水视频一区| 国产亚洲欧洲在线| 日韩免费观看在线观看| 精品久久久国产精品999| 成人免费看黄网站| 日本不卡高字幕在线2019| 国产成人精品视频在线观看| 日韩精品极品在线观看播放免费视频| 国产成人精品视频| 亚洲国产黄色片| www.美女亚洲精品| 国产欧洲精品视频| 色老头一区二区三区| 亚洲男人av电影| 国产亚洲在线播放| 国产精品伦子伦免费视频| 欧美做受高潮1| 国产玖玖精品视频| 在线观看视频亚洲| 欧美xxxwww| 91在线观看免费高清| 91国产美女视频| 日韩成人在线电影网| www.亚洲免费视频| 欧美激情精品久久久久久蜜臀| 久久视频精品在线| 97国产精品视频| 在线精品国产成人综合| 亚洲国产私拍精品国模在线观看| 亚洲a在线播放| 91av在线国产| 夜夜嗨av一区二区三区四区| 日韩成人激情在线| 欧美亚洲另类视频| 亚洲一区二区三区视频|