<?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')); });