首页 > PHP教程 > php开发知识文章

PHP Redis消息队列的实现

本文实例讲述了PHP基于Redis消息队列实现发布微博的方法。分享给大家供大家参考,具体如下:

phpRedisAdmin安装

下载版本包

从 github 下载 phpRedisAdmin,最新版 v1.6.0。依赖 predis 1.0.3 及以上;

从 github 下载 predis:https://github.com/nrk/predis,最新 v1.1.1,

Predis 代码直接放在 phpRedisAdmin 的 vendor 子目录下

从 git 库直接 clone

git clone https://github.com/ErikDubbelboer/phpRedisAdmin.git
cd phpRedisAdmin
git clone https://github.com/nrk/predis.git vendor

github地址:https://github.com/ErikDubbelboer/phpRedisAdmin

在线示例:https://dubbelboer.com/phpRedisAdmin/?overview

安装后Redis图形化管理界面,方便的管理Redis数据

PHP Redis消息队列的实现

为了降低Mysql的并发数,先把用户的信息存在Redis中

假设用户发布的时候需要三个字段,uid(用户ID号),username(用户姓名),content('用户的评论')

存储信息到redis

//需要安装phpredis
$redis = new Redis();
// 连接redis
$redis->connect('127.0.0.1', 6379);
//将数组转成json来存储
$web_info = array('uid' => '1', 'username' => 'aa', 'content' => 'aaphp');
$list = json_encode($web_info);

//lpush函数向KEY对应的头部添加一个字符串元素
$redis->lpush('weibo_list', $list);
$redis->close();

phpRedisAdmin里查看数据

PHP Redis消息队列的实现

此处的redis已经有数据了

同步redis数据到mysql数据库

//创建一个PDO数据库链接
class user
{
public function post($uid = '', $username = '', $content = '')
{
try {
$dsn = "mysql:host;dbname=localhost;dbname=user";
$db = new PDO($dsn, 'root', '123456');
$db->exec("SET NAMES UTF8");
$sql = "insert into test(uid,username,content)values('$uid','$username','$content')";
$db->exec($sql);
} catch (PDOException $e) {
$e->getMessage();
}
}
}

//处理redis数据库的数据 并把数据放到MYSQL数据库中
$user = new user();
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

//返回的列表的大小。如果列表不存在或为空,该命令返回0。如果该键不是列表,该命令返回FALSE
if ($redis->lsize('weibo_list')) {
//LIST头部删除并返回删除数据
$info = $redis->rPop('weibo_lists');
$info = json_decode($info);
$user->post($info->uid, $info->username, $info->content);
}
$redis->close();

我们能看到数据库已经有数据了

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+redis数据库程序设计技巧总结》、《PHP扩展开发教程》、《php+mysql数据库操作入门教程》、《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》及《php常见数据库操作技巧汇总

以上就是PHP Redis消息队列的实现的全部内容,欢迎大家学习。

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。