• 利用swoole coroutine协程实现redis异步操作


    <?php
    #注意:如果不开启兼容模式,会遇到这样的现象,用swoole协程的方法访问常规方法添加到redis中的数据,可能访问不到
    (直接返回NULL)!
    这可能是两者采用了
    不同的技术标准所致!

    go(function (){
        $redis = new SwooleCoroutineRedis();
        $redis->connect('127.0.0.1', 6379);
        $val = $redis->set('陈培昌',json_encode(['age'=>21,'expertin'=>['泰拳','巴西柔术']]));#同样是hmset,常规方法第2个参数是混合类型
    var_dump($val); }); go(function (){ $redis = new SwooleCoroutineRedis(); 
    $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 SwooleCoroutineRedis(); $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')); });
  • 相关阅读:
    重要网址
    线程同步与异步
    常量指针 和 指针常量
    权限设置
    COM组件技术
    抽象类与接口及其派生类的关系
    C++中 #pragma 的使用方法
    [原创].基于SyntaxHighlighter的Verilog HDL高亮组件
    [转载].图解SDRAM工作流程:仓库物语(高手进阶,终极内存技术指南——完整/进阶版)
    [笔记].原来Notepad++也有列模式
  • 原文地址:https://www.cnblogs.com/saintdingspage/p/11149023.html
Copyright © 2020-2023  润新知