php redis 简易消息队列

PHP · 2023-01-30

最近有点时间,研究下这个,由浅入深,这算一个开始。
两个方法,一个生产者,一个消费者
话不多说上代码:
生产者:

public function producer()
{
    $redis = new \Redis();
    $redis->connect('127.0.0.1',6379);
    $redis->select(6);
    try{
        $res = $redis->LPUSH('list',' '.date("Y-m-d H:i:s"));
    }catch(Exception $e){
        $res = $e->getMessage();
    }
    return json_encode(['success' => !is_string($res),'result'=>$res]);
}

消费者:

public function run()
{
    //
    $redis = new \Redis();
    $redis->connect('127.0.0.1', 6379);
    $redis->select(6);
    echo "状态: " . $redis->ping();
    while(true) {
        try{
            $value = $redis->LPOP('list');
            //这里进行业务处理
            if($value){
                print_r($value);
                echo "\n";
            }
        }catch(Exception $e){
            echo $e->getMessage();
        }
        //1秒钟执行一次
        sleep(1);
    }
}

消息队列介绍
代码参考地址

Redis 消息队列
Theme Jasmine by Kent Liao