当前位置: 首页 > 编程笔记 >

php结合redis高并发下发帖、发微博的实现方法

彭弘方
2023-03-14
本文向大家介绍php结合redis高并发下发帖、发微博的实现方法,包括了php结合redis高并发下发帖、发微博的实现方法的使用技巧和注意事项,需要的朋友参考一下

发帖、发微博、点赞、评论等这些操作很频繁的动作如果并发量小,直接入库是最简单的

但是并发量一大,数据库肯定扛不住,这时可采取延迟发布:先将发布动作保存在队列里,后台进程循环获取再入库

模拟发布微博先进入redis队列

weibo_redis.php

<?php
//此处需要安装phpredis扩展
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth("php001");
//连接redis
$web_info= array(
	'uid' => $_REQUEST[uid], //发布者id
	'username' => $_REQUEST[username],//发布者用户名
	'content' =>$_REQUEST[content],//微博内容
);


//将数组转成json来存储
$list = json_encode($web_info);
//lpush向KEY对应的头部添加一个字符串元素
$redis->lpush('weibo_lists',$list);
$redis->close();
var_dump($list);
?>

模拟后台进程从redis队列获取微博

Pdodb.class.php

<?php
class Pdodb{
	public function post($uid='',$username='',$content=''){
		try{
			$dsn = "mysql:localhost;dbname=localhost;dbname=big";
			$db = new PDO($dsn,'big','123456');	
			$db->exec("SET NAMES UTF8");
			$sql ="insert into ih_weibo(uid,username,content)values('$uid','$username','$content')";
			//echo $sql;
			$db->exec($sql);
		}catch(PDOException $e){
			echo $e->getMessage();
		}
	}
}

weibo_mysql.php

<?php
require_once 'Pdodb.class.php';
set_time_limit(0); // 取消脚本运行时间的超时上限


$pdo = new Pdodb();
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);


while (true) {
	//返回的列表的大小。如果列表不存在或为空,该命令返回0。如果该键不是列表,该命令返回false
	if($redis -> lsize('weibo_lists')){
		//从LIST头部删除并返回删除数据
		$info = $redis->rpop('weibo_lists');
		$info = json_decode($info);
		$pdo->post($info->uid,$info->username,$info->content);
	}
	$redis->close();
	sleep(10);//延时10秒
}

后台执行weibo_mysql.php

nohup php /var/www/html/big/weibo_mysql.php &

以上这篇php结合redis高并发下发帖、发微博的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍redis+php实现微博(二)发布与关注功能详解,包括了redis+php实现微博(二)发布与关注功能详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了redis+php实现微博发布与关注功能。分享给大家供大家参考,具体如下: 数据结构: set post:postid:3:time timestamp set post:postid:3:userid 5 set pos

  • 本文向大家介绍PHP+Mysql+jQuery实现发布微博程序 php篇,包括了PHP+Mysql+jQuery实现发布微博程序 php篇的使用技巧和注意事项,需要的朋友参考一下 先还是要说明本例的业务流程: 1、前端用户输入内容,并对输入的内容字数进行实时统计。 2、用户提交数据,jQuery实现通过Ajax向后台发送数据。 3、后台PHP接收提交表单的数据,并对数据进行必要的安全过滤。 4、后

  • 本文向大家介绍PHP使用redis消息队列发布微博的方法示例,包括了PHP使用redis消息队列发布微博的方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP使用redis消息队列发布微博的方法。分享给大家供大家参考,具体如下: 在一些用户发布内容应用中,可能出现1秒上万个用户同时发布消息的情况,此时使用mysql可能会出现" too many connections"错误,当然

  • 本文向大家介绍Redis瞬时高并发秒杀方案总结,包括了Redis瞬时高并发秒杀方案总结的使用技巧和注意事项,需要的朋友参考一下 1.Redis 丰富的数据结构(Data Structures) 字符串(String)     Redis字符串能包含任意类型的数据;;      一个字符串类型的值最多能存储512M字节的内容;     利用INCR命令簇(INCR, DECR, INCRBY)来把字

  • 本文向大家介绍nodejs开发微博实例,包括了nodejs开发微博实例的使用技巧和注意事项,需要的朋友参考一下 之前一直执着于前端开发,最近几天,开始学起了nodejs。作为一名前端开发者,见到这样一门用javascript写的后台自然是很激动的。但是,后台毕竟不同于前端,在学习的过程中,还是会遇到不少问题。 为了开始学习nodejs,一开始选择了《深入浅出nodejs》这本书,看了几章之后,得出

  • 本文向大家介绍springboot高并发下提高吞吐量的实现,包括了springboot高并发下提高吞吐量的实现的使用技巧和注意事项,需要的朋友参考一下 公司让做一个全文检索的项目,我使用的是elasticsearch。但是对性能有很高的要求,为了解决性能问题,我简直是寝食难安。 es(elasticsearch)没有使用分布式,单台的。 开发完测试的时候,查询慢,吞吐量低。 网友们建议用异步--使

  • 本文向大家介绍php多线程并发实现方法,包括了php多线程并发实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php多线程并发实现方法。分享给大家供大家参考,具体如下: java里多线程就是一个new thread的事情,php依赖apache靠着linux底层有一个多线程的办法。 这里就来说说如果你无法操控apache的服务器,如何模拟php并发 以上代码,在本地写入一个文件。

  • 本文向大家介绍jQuery实现鼠标选文字发新浪微博的方法,包括了jQuery实现鼠标选文字发新浪微博的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery实现鼠标选文字发新浪微博的方法。分享给大家供大家参考,具体如下: 最近注意到新浪博客有个小功能,就是当鼠标选中一段文字时会浮现一个小图片,点击这个图片可以把选中内容发送到新浪微博,一时兴起昨晚就写了一个Demo玩了一下,代码超