redis 实现消息队列的代码。

redis 实现消息队列的代码。
启用redis的键空间通知功能,在redis.conf里面配置:notify-keyspace-events “Ex”


ini_set('default_socket_timeout', -1);
try{
    $redis = new \redis();
    $redis->pconnect('127.0.0.1');
    $redis->setOption(\Redis::OPT_READ_TIMEOUT, -1);
    $redis->auth('root');
    $res = $redis->setex('abc',3, 'haoren');
    //订阅  hanweibing  频道  ,当频道有值的时候会触发 keyCallback
    $redis->subscribe(['1wehanweibingf'], 'keyCallback');
    //当有键被删除或者过期的时候触发keyCallback 
    $redis->psubscribe(array('__keyevent@0__:expired', '__keyevent@0__:del'), 'keyCallback');


}catch(\Exception $e){
    $arr['error_msg'] = $e->getMessage();
    print_r($arr);
    file_put_contents(date('y-m-d').'error.log', json_encode($arr));
}

function keyCallback( $redis, $pattern, $chan, $msg){

    $arr['redis'] = $redis;
    $arr['pattern'] = $pattern;
    $arr['channel'] = $chan;
//    $arr['msg'] = $msg;
    //$arr['v'] = $hh;
    print_r($arr);
    file_put_contents(date('y-m-d').'abc.log', json_encode($arr));

}
~        

你可能感兴趣的:(redis,php,消息队列)