phpredis实现消息队列

通过redis的消息对列提高聊天服务器的并发量 消息队列

1.保存数据到队列


$redis = new redis();

$redis->connect('127.0.0.1', 6379);

$chat_content = array(

"chat_content2"=>1231231,

"chat_content1"=>"sdfsda",

"chat_content3"=>"asdfasdfasd",

"chat_content4"=>"adfasdfas",

);

$redis->lpush("chat_content_list",json_encode($chat_content));//在列表的头部添加一条或多条内容

$redis->close();

?>

2.保存数据到mysql是单独的一个定时任务,需要手动启动

把数据保存到mysql数据库


$redis = new redis();

$redis->connect('127.0.0.1', 6379);

if($redis->lsize("chat_content_list")>0){//lsize获取列表中key值的长度(有多少个value)没有的话返回0

$chat_info = $redis->rpop("chat_content_list");//在列表尾部取出一条数据(出队,取出的数据value在列表中就删除了)

$chat_info = json_decode($chat_info,true);//不加true返回的是一个对象,加true返回数组

//普通聊天

$pdo = new PDO("mysql:host=127.0.0.1;chatset=utf8;dbname=webim;port=3306","root","");

//这里的方法需要从新实现

$pdo->add_record($chat_info);

}else{

sleep(1);

}

$redis->close();

?>

你可能感兴趣的:(phpredis实现消息队列)