利用swoole coroutine協程實現redis異步操作


<?php
#注意:如果不開啟兼容模式,會遇到這樣的現象,用swoole協程的方法訪問常規方法添加到redis中的數據,可能訪問不到
(直接返回NULL)!
這可能是兩者采用了
不同的技術標准所致!

go(function (){
    $redis = new Swoole\Coroutine\Redis();
    $redis->connect('127.0.0.1', 6379);
    $val = $redis->set('陳培昌',json_encode(['age'=>21,'expertin'=>['泰拳','巴西柔術']]));#同樣是hmset,常規方法第2個參數是混合類型
var_dump($val); }); go(function (){ $redis = new Swoole\Coroutine\Redis(); 
$redis
->connect('127.0.0.1', 6379);
$val
= $redis->get('陳培昌');
var_dump(json_decode($val)); });

打印結果:

object(stdClass)#8 (2) {
["age"]=>
int(21)
["expertin"]=>
array(2) {
[0]=>
string(6) "泰拳"
[1]=>
string(12) "巴西柔術"
}
}
bool(true)

 

#常規方法

/*把貨單項目名稱鍵名加載到redis*/

$li = new mysqli('localhost','root','wenwajiao','taizhouwu');
$sql = "select title,colname from columninfo";
$stmt=$li->query($sql);
$liaogaximaxida = $stmt->fetch_all();
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
for ($i=0;$i<count($liaogaximaxida);$i++)
{
    $saiwa = $liaogaximaxida[$i];
    $redis->hMSet($saiwa[0],['mykey'=>$saiwa[1]]);#同樣是hmset,常規方法第2個參數是數組類型
}
;

 #開啟兼容模式-----swoole4.4版本可用!

喲比~其實文檔早就有了,我沒仔細看,這個浮躁,功利的時代,唉~,再次感謝韓天峰先生
go(function (){ $myredis
= new Swoole\Coroutine\Redis(); $myredis->connect('127.0.0.1',6379); $myredis->setOptions(['compatibility_mode' => true]);#重要,開啟后,支持協程中使用php redis操作
   #所謂php redis操作就是我們耳熟能詳的hmGet/hGetAll/zRange/zRevRange/zRangeByScore/zRevRangeByScore各類方法     $myredis
->hmset('testkey3',['name'=>'勁兒弟弟','age'=>20]); var_dump($myredis->hgetall('testkey3')); });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM