redis 实现消息队列的代码。
启用redis的键空间通知功能,在redis.conf里面配置:notify-keyspace-events “Ex”
<?php
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));
}
~