$params =json_encode(['x_uid' => $x_uid, 'phone' => $phone]); $redis->publish('test',$params); //test表示發佈的頻道名字
$redis = new Redis(); $redis->pconnect('127.0.0.1'); //必須用pconnect長鏈接 //設置redis鏈接永遠不超時。默認60s超時斷開鏈接 $redis->setOption(Redis::OPT_READ_TIMEOUT, -1); $redis->subscribe(array('test'), 'callback'); //test表示頻道名字,callback 回調函數名 functioncallback($redis, $chan, $msg){ //對收到的消息進行處理函數 $params = json_decode($msg,true); .... }
$redis =newRedis(); $redis->connect('127.0.0.1'); //將須要寫入數據庫的數據所有push到隊列(複雜數據能夠先json編碼成字符串) $list = json_encode(['x_uid' => $x_uid, 'phone' => $phone, 'goods_id' => $goodsId, 'add_time' => time(), 'num_field' => $num_field]); $redis->lpush('winer',$list);
<?php //連接數據庫 $conn = mysqli_connect("localhost","root","root"); if(!$conn){ die("鏈接數據庫失敗:". mysqli_error()); } mysqli_select_db($conn,"api"); //字符轉換,讀庫 mysqli_query($conn,"set character set 'utf8'"); //寫庫 mysqli_query($conn,"set names 'utf8'"); //鏈接本地的 Redis 服務 $redis =newRedis(); $redis->connect('127.0.0.1',6379); //設置redis鏈接永遠不超時。默認60s超時斷開鏈接 $redis->setOption(Redis::OPT_READ_TIMEOUT,-1); echo 'Listening...'; $i =1; while(true){ $data = $redis->brpop('winer',0); // 0表示沒有接收到參數的狀況下,永遠不超時斷開 $info = json_decode($data[1],true); $x_uid = $info['x_uid']; $phone = $info['phone']; $goods_id = $info['goods_id']; $add_time = $info['add_time']; $num_field = $info['num_field']; //將數組寫入數據庫、訂單 $sql = "insert into hd_hengda11_order (`x_uid`,`phone`,`goods_id`,`add_time`) values ($x_uid,$phone,$goods_id,$add_time)" $re = mysqli_query($conn,$sql); echo $i.'_ok||'; $i++; } ?>
//存放商品數量的隊列 for($j =1; $j <=10; $j++){ /設置商品數量爲10 $re =Redis::lpush(gooods_count,1); }
$count=Redis::lpop('gooods_count'); //$count = Redis::llen('gooods_count'); //llen判斷隊列長度 if(!$count){ return'已經搶光了哦'; }