第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

PHP消息隊(duì)列實(shí)現(xiàn)及應(yīng)用

Wicon PHP開發(fā)工程師
難度中級(jí)
時(shí)長(zhǎng) 1小時(shí)14分
學(xué)習(xí)人數(shù)
綜合評(píng)分9.73
65人評(píng)價(jià) 查看評(píng)價(jià)
9.8 內(nèi)容實(shí)用
9.8 簡(jiǎn)潔易懂
9.6 邏輯清晰
  • user.php?客戶端
    
    <?php
    //連接本地的?Redis?服務(wù)
    $redis?=?new?Redis();
    $redis->connect('127.0.0.1',?6379);
    
    if?($redis)?{
    ????echo?"success";
    }
    $redis_name='miaosha';
    
    for?($i=0;?$i<100;?$i++)?{
    ????$uid?=?rand(100000,?9999999);
    
    //接受用戶id
    ???//?$uid?=?$_GET['uid'];
    //獲取一下redis里面已有的數(shù)量
    ????$num?=?10;
    //如果當(dāng)前人數(shù)少于時(shí)候的時(shí)候,則加入這個(gè)隊(duì)列
    ????if?($redis->lLen($redis_name)?<?10)?{
    ????????$redis->rPush($redis_name,$uid.'%'.microtime());
    ????????echo?$uid?.?'秒殺成功!'.'<br>';
    ????}?else?{
    ????????//如果當(dāng)天人數(shù)已經(jīng)達(dá)到了十個(gè)人,則返回秒殺已完成
    ????????echo?"秒殺已結(jié)束";
    ????}
    
    }
    $redis->close();
    
    ?>
    查看全部
  • 服務(wù)端
    <?php
    include?'./db.php';
    //連接本地的?Redis?服務(wù)
    $redis?=?new?Redis();
    $redis->connect('127.0.0.1',?6379);
    $redis_name="miaosha";
    $db=DB::getIntance();
    
    //死循環(huán),
    while?(1){
    //第一步
    //從隊(duì)列最左側(cè)取出一個(gè)值來,
    $user?=?$redis->lPop($redis_name);
    //然后判斷這個(gè)值是否存在,
    if(!$user||$user=='nil'){
    ????sleep(2);
    ????continue;
    }
    //如果存在切割出時(shí)間,uid
    ????$user_arr?=?explode('%',?$user);
    
    ????$insert_data?=?array(
    ????????'uid'?=>?$user_arr[0],
    ????????'time_stamp'?=>?$user_arr[1]);
    
    
    ????$res?=?$db->insert('redis_queue',$insert_data);
    //保存數(shù)據(jù)庫(kù)中,
    ??if(!$res){
    ??????$redis->rPush($redis_name,$user);
    ??}
    ??sleep(2);
    //第二部
    //redis如果把值取出來這個(gè)值就不在隊(duì)列里了
    //如果出現(xiàn)問題了我的業(yè)務(wù)沒有完成失敗的情況下,我們需要有一個(gè)備份機(jī)制把值重新插回隊(duì)列里
    //數(shù)據(jù)庫(kù)插入失敗時(shí)候的回滾機(jī)制
    //釋放一下redis
    
    }
    $redis->close();
    ?>


    查看全部
  • 22222
    查看全部
    0 采集 收起 來源:總結(jié).mp4

    2019-10-23

  • 棒? ?繼續(xù)加油


    查看全部
  • LTRIM:保留置頂區(qū)間內(nèi)的元素

    LLEN:獲取列表長(zhǎng)度

    LSET:通過索引設(shè)置列表元素值

    LINDEX:通過索引獲取列表中的元素

    LRANGE:獲取列表置頂范圍內(nèi)的元素

    查看全部
    0 采集 收起 來源:Redis

    2019-06-01

  • LPUSH/LPUSHX:將值插入到(/存在的)列表頭部->帶X為存在的

    RPUSH/RPUSHX:將值插入到(/存在的)列表尾部->帶X為存在的

    LPOP:移出并獲取列表的第一個(gè)元素

    RPOP:移出并獲取列表的最后一個(gè)元素

    查看全部
    0 采集 收起 來源:Redis

    2019-06-01

  • 查看文件安裝路徑方法:

    1、dpkg -L softwarename;?

    2、sudo apt-get install apt-file,

    然后使用命令:apt-file list softwarename,?


    查看全部
    0 采集 收起 來源:總結(jié).mp4

    2019-05-17

  • Redis List類型

    查看全部
    0 采集 收起 來源:Redis

    2019-05-17

  • 消息隊(duì)列的應(yīng)用場(chǎng)景

    冗余:記錄訂單處理程序??

    解耦:分離兩套系統(tǒng),入隊(duì)出隊(duì)系統(tǒng)各不影響

    流量削峰:搶購(gòu)秒殺

    異步通信:入隊(duì)

    擴(kuò)展性:訂單隊(duì)列可擴(kuò)展,新接口處理。

    排序保證:順序排位

    隊(duì)列介質(zhì):Mysql,Redis(單個(gè)包太大,效率低),消息系統(tǒng)


    查看全部
    0 采集 收起 來源:Redis

    2019-05-17

  • <?php

    // 數(shù)據(jù)庫(kù)連接類

    class DB{

    ? //私有的屬性

    ? private static $dbcon=false;

    ? private $host;

    ? private $port;

    ? private $user;

    ? private $pass;

    ? private $db;

    ? private $charset;

    ? private $link;

    ? //私有的構(gòu)造方法

    ? private function __construct(){

    ? ? $this->host =? 'localhost';

    ? ? $this->port =? '3306';

    ? ? $this->user =? 'root';

    ? ? $this->pass =? 'root';

    ? ? $this->db =? 'imooc';

    ? ? $this->charset= 'utf8';

    ? ? //連接數(shù)據(jù)庫(kù)

    ? ? $this->db_connect();

    ? ? //選擇數(shù)據(jù)庫(kù)

    ? ? $this->db_usedb();

    ? ? //設(shè)置字符集

    ? ? $this->db_charset();

    ? ?}

    ? ?//連接數(shù)據(jù)庫(kù)

    ? ?private function db_connect(){

    ? ? $this->link=mysqli_connect($this->host.':'.$this->port,$this->user,$this->pass);

    ? ? if(!$this->link){

    ? ? ? echo "數(shù)據(jù)庫(kù)連接失敗<br>";

    ? ? ? echo "錯(cuò)誤編碼".mysqli_errno($this->link)."<br>";

    ? ? ? echo "錯(cuò)誤信息".mysqli_error($this->link)."<br>";

    ? ? ? exit;

    ? ? }

    ? ?}

    ? ?//設(shè)置字符集

    ? ? private function db_charset(){

    ? ? ?mysqli_query($this->link,"set names {$this->charset}");

    ? ? }

    ? ? //選擇數(shù)據(jù)庫(kù)

    ? ?private function db_usedb(){

    ? ? ?mysqli_query($this->link,"use {$this->db}");

    ? ?}

    ? ?//私有的克隆

    ? ?private function __clone(){

    ? ? ?die('clone is not allowed');

    ? ?}

    ? ?//公用的靜態(tài)方法

    ? ?public static function getIntance(){

    ? ? ?if(self::$dbcon==false){

    ? ? ? self::$dbcon=new self;

    ? ? ?}

    ? ? ?return self::$dbcon;

    ? ?}

    ? ?//執(zhí)行sql語(yǔ)句的方法

    ? ? public function query($sql){

    ? ? ?$res=mysqli_query($this->link,$sql);

    ? ? ?if(!$res){

    ? ? ? echo "sql語(yǔ)句執(zhí)行失敗<br>";

    ? ? ? echo "錯(cuò)誤編碼是".mysqli_errno($this->link)."<br>";

    ? ? ? echo "錯(cuò)誤信息是".mysqli_error($this->link)."<br>";

    ? ? ?}

    ? ? ?return $res;

    ? ?}

    ? ? //獲得最后一條記錄id

    ? ? public function getInsertid(){

    ? ? ?return mysqli_insert_id($this->link);

    ? ? }

    ? ?/**

    ? ? * 查詢某個(gè)字段

    ? ? * @param

    ? ? * @return string or int

    ? ? */

    ? ? public function getOne($sql){

    ? ? ?$query=$this->query($sql);

    ? ? ? return mysqli_free_result($query);

    ? ? }

    ? ? //獲取一行記錄,return array 一維數(shù)組

    ? ? public function getRow($sql,$type="assoc"){

    ? ? ?$query=$this->query($sql);

    ? ? ?if(!in_array($type,array("assoc",'array',"row"))){

    ? ? ? ?die("mysqli_query error");

    ? ? ?}

    ? ? ?$funcname="mysqli_fetch_".$type;

    ? ? ?return $funcname($query);

    ? ? }

    ? ? //獲取一條記錄,前置條件通過資源獲取一條記錄

    ? ? public function getFormSource($query,$type="assoc"){

    ? ? if(!in_array($type,array("assoc","array","row")))

    ? ? {

    ? ? ? die("mysqli_query error");

    ? ? }

    ? ? $funcname="mysqli_fetch_".$type;

    ? ? return $funcname($query);

    ? ? }

    ? ? //獲取多條數(shù)據(jù),二維數(shù)組

    ? ? public function getAll($sql){

    ? ? ?$query=$this->query($sql);

    ? ? ?$list=array();

    ? ? ?while ($r=$this->getFormSource($query)) {

    ? ? ? $list[]=$r;

    ? ? ?}

    ? ? ?return $list;

    ? ? }


    ? ? public function selectAll($table,$where,$fields='*',$order='',$skip=0,$limit=1000)

    ? ? {

    ? ? ? ? ? ? ? if(is_array($where)){

    ? ? ? ? ? ? ? ? ? ? foreach ($where as $key => $val) {

    ? ? ? ? ? ? ? ? ? ? ? ? if (is_numeric($val)) {

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? $condition = $key.'='.$val;

    ? ? ? ? ? ? ? ? ? ? ? ? }else{

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? $condition = $key.'=\"'.$val.'\"';

    ? ? ? ? ? ? ? ? ? ? ? ? }

    ? ? ? ? ? ? ? ? ? ? }

    ? ? ? ? ? ? ? } else {

    ? ? ? ? ? ? ? ? $condition = $where;

    ? ? ? ? ? ? ? }

    ? ? ? ? ? ? ? if (!empty($order)) {

    ? ? ? ? ? ? ? ? ? $order = " order by ".$order;

    ? ? ? ? ? ? ? }

    ? ? ? ? ? ? ? $sql = "select $fields from $table where $condition $order limit $skip,$limit";

    ? ? ? ? ? ? ? $query = $this->query($sql);

    ? ? ? ? ? ? ? $list = array();

    ? ? ? ? ? ? ? while ($r= $this->getFormSource($query)) {

    ? ? ? ? ? ? ? ? ? $list[] = $r;

    ? ? ? ? ? ? ? }

    ? ? ? ? ? ? ? return $list;

    ? ? }

    ? ? ?/**

    ? ? ?* 定義添加數(shù)據(jù)的方法

    ? ? ?* @param string $table 表名

    ? ? ?* @param string orarray $data [數(shù)據(jù)]

    ? ? ?* @return int 最新添加的id

    ? ? ?*/

    ? ? ?public function insert($table,$data){

    ? ? ?//遍歷數(shù)組,得到每一個(gè)字段和字段的值

    ? ? ?$key_str='';

    ? ? ?$v_str='';

    ? ? ?foreach($data as $key=>$v){

    ? ? ?//? if(empty($v)){

    ? ? ?//? ?die("error");

    ? ? ?// }

    ? ? ? ? //$key的值是每一個(gè)字段s一個(gè)字段所對(duì)應(yīng)的值

    ? ? ? ? $key_str.=$key.',';

    ? ? ? ? $v_str.="'$v',";

    ? ? ?}

    ? ? ?$key_str=trim($key_str,',');

    ? ? ?$v_str=trim($v_str,',');

    ? ? ?//判斷數(shù)據(jù)是否為空

    ? ? ?$sql="insert into $table ($key_str) values ($v_str)";

    ? ? ?$this->query($sql);

    ? ? //返回上一次增加操做產(chǎn)生ID值

    ? ? ?return $this->getInsertid();

    ? ?}

    ? ?/*

    ? ? * 刪除一條數(shù)據(jù)方法

    ? ? * @param1 $table, $where=array('id'=>'1') 表名 條件

    ? ? * @return 受影響的行數(shù)

    ? ? */

    ? ? public function deleteOne($table, $where){

    ? ? ? if(is_array($where)){

    ? ? ? ? foreach ($where as $key => $val) {

    ? ? ? ? ? $condition = $key.'='.$val;

    ? ? ? ? }

    ? ? ? } else {

    ? ? ? ? $condition = $where;

    ? ? ? }

    ? ? ? $sql = "delete from $table where $condition";

    ? ? ? $this->query($sql);

    ? ? ? //返回受影響的行數(shù)

    ? ? ? return mysqli_affected_rows($this->link);

    ? ? }

    ? ? /*

    ? ? * 刪除多條數(shù)據(jù)方法

    ? ? * @param1 $table, $where 表名 條件

    ? ? * @return 受影響的行數(shù)

    ? ? */

    ? ? public function deleteAll($table, $where){

    ? ? ? if(is_array($where)){

    ? ? ? ? foreach ($where as $key => $val) {

    ? ? ? ? ? if(is_array($val)){

    ? ? ? ? ? ? $condition = $key.' in ('.implode(',', $val) .')';

    ? ? ? ? ? } else {

    ? ? ? ? ? ? $condition = $key. '=' .$val;

    ? ? ? ? ? }

    ? ? ? ? }

    ? ? ? } else {

    ? ? ? ? $condition = $where;

    ? ? ? }

    ? ? ? $sql = "delete from $table where $condition";

    ? ? ? $this->query($sql);

    ? ? ? //返回受影響的行數(shù)

    ? ? ? return mysqli_affected_rows($this->link);

    ? ? }

    ? ?/**

    ? ? * [修改操作description]

    ? ? * @param [type] $table [表名]

    ? ? * @param [type] $data [數(shù)據(jù)]

    ? ? * @param [type] $where [條件]

    ? ? * @return [type]

    ? ? */

    ? ?public function update($table,$data,$where,$limit=0){

    ? ? ?//遍歷數(shù)組,得到每一個(gè)字段和字段的值

    ? ? ?$str='';

    ? ? foreach($data as $key=>$v){

    ? ? ?$str.="$key='$v',";

    ? ? }

    ? ? $str=rtrim($str,',');

    ? ? ? if(is_array($where)){

    ? ? ? ? foreach ($where as $key => $val) {

    ? ? ? ? ? if(is_array($val)){

    ? ? ? ? ? ? $condition = $key.' in ('.implode(',', $val) .')';

    ? ? ? ? ? } else {

    ? ? ? ? ? ? $condition = $key. '=' .$val;

    ? ? ? ? ? }

    ? ? ? ? }

    ? ? ? } else {

    ? ? ? ? $condition = $where;

    ? ? ? }


    ? ? ? ? if (!empty($limit)) {

    ? ? ? ? ? ? $limit = " limit ".$limit;

    ? ? ? ? }else{

    ? ? ? ? ? ? $limit='';

    ? ? ? ? }

    ? ? //修改SQL語(yǔ)句

    ? ? $sql="update $table set $str where $condition $limit";

    ? ? $this->query($sql);

    ? ? //返回受影響的行數(shù)

    ? ? return mysqli_affected_rows($this->link);

    ? ?}

    }

    ?>

    使用方法

    對(duì)DB類中__construct()中的配置信息,進(jìn)行符合自己數(shù)據(jù)庫(kù)的修改

    include 引入DB類

    使用DB類中的方法需要先進(jìn)行實(shí)例化,以插入數(shù)據(jù)為例:

    $db = DB::getIntance();

    $insert_data = ['order_id'=>'10010','order_amount' = '200.00','status'=> 1];

    $res = $db->insert('order_info',$insert_data);



    查看全部
  • 左側(cè)插入 lpush


    查看全部
    0 采集 收起 來源:Redis

    2019-04-04

  • redis新手學(xué)習(xí):949359454,不懂的可以在群里提問哦https://img1.sycdn.imooc.com//5c7149d100012bbc02260290.jpg

    查看全部
  • redis新手學(xué)習(xí)交流群:949359454,不懂的可以在群里提問哦https://img1.sycdn.imooc.com//5c7149d100012bbc02260290.jpg

    查看全部
  • redis新手學(xué)習(xí)交流群:949359454,不懂的可以在群里提問哦https://img1.sycdn.imooc.com//5c7149d100012bbc02260290.jpg

    查看全部
  • redis消息隊(duì)列的應(yīng)用場(chǎng)景

    查看全部
  • PHP插件

    查看全部
    0 采集 收起 來源:RabbitMQ

    2019-01-31

舉報(bào)

0/150
提交
取消
課程須知
1.掌握PHP基礎(chǔ)知識(shí) 2.使用過Redis技術(shù)做緩存 3.有簡(jiǎn)單的Linux命令基礎(chǔ),如cd、sudo、apt、Vim
老師告訴你能學(xué)到什么?
1.隊(duì)列是個(gè)什么東西,他能干什么 2.隊(duì)列的應(yīng)用場(chǎng)景有哪些 3.如何使用隊(duì)列對(duì)業(yè)務(wù)進(jìn)行解耦 4.如何使用Redis隊(duì)列來消除高壓力 5.專業(yè)的隊(duì)列系統(tǒng)RabbitMQ如何來使用 課程所需庫(kù)文件:http://pan.baidu.com/s/1bQg038

微信掃碼,參與3人拼團(tuán)

微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

友情提示:

您好,此課程屬于遷移課程,您已購(gòu)買該課程,無需重復(fù)購(gòu)買,感謝您對(duì)慕課網(wǎng)的支持!