PHP下使用Redis消息队列发布微博(复制)

phpRedisAdmin :github地址  图形化管理界面

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

首先安装上述的Redis图形化管理界面,能够方便的管理Redis数据

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

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

比如用户传递以下信息

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<?php

//此处需要安装phpredis

$redis new Redis();

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

        //    连接redis

$web_infoarray(

‘uid‘ => ‘123456‘,

‘username‘ => ‘123‘,

‘content‘ =>‘123‘

);

//将数组转成json来存储

$list = json_encode($web_info);

//lpush向KEY对应的头部添加一个字符串元素

$redis->lpush(‘weibo_lists‘,$list);

$redis->close();

///var_dump(json_encode($web_info));

var_dump($list);

?>

此处可以看到我们的redis已经有数据了

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

//创建一个PDO数据库链接  data.php

<?php

class qq{

public function post($uid=‘‘,$username=‘‘,$content=‘‘){

    try{

            $dsn "mysql:host;dbname=localhost;dbname=test";

            $db new PDO($dsn,‘root‘,‘root‘);  

                        $db->exec("SET NAMES UTF8");

            $sql ="insert into test(uid,username,content)values(‘$uid‘,‘$username‘,‘$content‘)";

$db->exec($sql);

    }catch(PDOException $e){

    $e->getMessage();

}

            

    }

 

}

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

//处理redis数据库的数据 并把数据放到MYSQL数据库中

<?php

include "data.php";

$qq new qq();

$redis new Redis();

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

            //返回的列表的大小。如果列表不存在或为空,该命令返回0。如果该键不是列表,该命令返回FALSE

    if($redis -> lsize(‘weibo_lists‘)){

    //从LIST头部删除并返回删除数据

        $info $redis->rpop(‘weibo_lists‘);

        $info = json_decode($info);

        $qq->post($info->uid,$info->username,$info->content);

    }

$redis->close();

var_dump($info);

?>

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

时间: 2025-01-04 23:41:51

PHP下使用Redis消息队列发布微博(复制)的相关文章

PHP下使用Redis消息队列发布微博

phpRedisAdmin :github地址  图形化管理界面 git clone https://github.com/ErikDubbelboer/phpRedisAdmin.git cd phpRedisAdmin git clone https://github.com/nrk/predis.git vendor 首先安装上述的Redis图形化管理界面,能够方便的管理Redis数据 为了降低Mysql的并发数,先把用户的微博存在Redis中 假设用户发布的时候需要三个字段,uid(用户

使用消息队列发布微博

在一些用户发布内容应用中,可能出现1秒上万个用户同时发布消息的情况,此时使用mysql可能会出现" too many connections"错误,当然把Mysql的max_connections参数设置为更大数,不过这是一个治标不治本的方法.而使用redis的消息队列,把用户发布的消息暂时存储在消息队列中,然后使用多个cron程序把消息队列中的数据插入到Mysql.这样就有效的降低了Mysql的高并发.具体实现原理如下: 现有微博发布接口: $weibo = new Weibo();

Redis消息队列

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式.利用redis这两种场景的消息队列都能够实现. 生产者消费者模式:生产者生产消息放到队列里,多个消费者同时监听队列,谁先抢到消息谁就会从队列中取走消息:即对于每个消息只能被最多一个消费者拥有: 发布者订阅者模式:发布者生产消息放到队列里,多个监听队列的消费者都会收到同一份消息:即正常情况下每个消费者收到的消息应该都是一样的: 对应的使用场景包括:A系统向队列中存放数据:B系统在队列中取数据: 1.redis队列模式:可

redis消息队列简单应用

参考 https://blog.yxccan.cn/blog/detail/3 一.什么是消息队列 是一个消息的链表,是一个异步处理的数据处理引擎. PS:可以理解为在redis的list列表中存放消息数据,然后按照排队方式先进先出(左进右出:右进左出) 二.可以使用的应用场景 主要应用一些延迟或异步操作的场景比如:发送邮件.发送短信.视频转码.图片转码.日志存储.导入数据等在发送邮件或者短信,我们不希望程序一直停留,等待发送成功才相应,而是异步进行处理,即:将待发送的邮件数据添加到消息队列中,

Redis 消息队列的实现

概述 Redis实现消息队列有两种形式: 广播订阅模式:基于Redis的 Pub/Sub 机制,一旦有客户端往某个key里面 publish一个消息,所有subscribe的客户端都会触发事件 集群订阅模式:基于Redis List双向+ 原子性 + BRPOP Redis消息队列时,当Redis宕机后,消息可能会丢失(也要看持久化的策略).如果收消息方未有重发和验证机制,Redis内的数据会出现丢失.所以,使用Redis的作为消息队列,通常是对于消息的准确性并非特别高的场景. 原理 基于Red

redis 实战教程、redis缓存教程、redis消息发布、订阅、redis消息队列教程

一:本教程使用环境: ubuntu12.x .jdk1.7 .Intellij idea.spring3.2.8 .redis服务端3.0,jedis客户端2.7.3 spring-data-redis 1.6.0 二:redis 服务端安装教程 这里不详解 三:redis 缓存特性 示例如下: spring配置: <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">

java redis使用之利用jedis实现redis消息队列

应用场景 对于数据库查询的IO连接数高.连接频繁的情况,可以考虑使用缓存实现. 从网上了解到redis可以对所有的内容进行二进制的存储,而java是可以对所有对象进行序列化的,序列化的方法会在下面的代码中提供实现. 序列化 这里我编写了一个java序列化的工具,主要是对对象转换成byte[],和根据byte[]数组反序列化成java对象: 主要是用到了ByteArrayOutputStream和ByteArrayInputStream: 需要注意的是每个自定义的需要序列化的对象都要实现Seria

(转)java redis使用之利用jedis实现redis消息队列

应用场景 最近在公司做项目,需要对聊天内容进行存储,考虑到数据库查询的IO连接数高.连接频繁的因素,决定利用缓存做. 从网上了解到redis可以对所有的内容进行二进制的存储,而java是可以对所有对象进行序列化的,序列化的方法会在下面的代码中提供实现. 序列化 这里我编写了一个java序列化的工具,主要是对对象转换成byte[],和根据byte[]数组反序列化成java对象: 主要是用到了ByteArrayOutputStream和ByteArrayInputStream: 需要注意的是每个自定

PHP(Mysql/Redis)消息队列的介绍及应用场景案例--转载

郑重提示:本博客转载自好友博客,个人觉得写的很牛逼所以未经同意强行转载,原博客连接 http://www.cnblogs.com/wt645631686/p/8243438.html 欢迎访问 在进行网站设计的时候,有时候会遇到给用户大量发送短信,或者订单系统有大量的日志需要记录,还有做秒杀设计的时候,服务器无法承受这种瞬间的压力,无法正常处理,咱们怎么才能保证系统正常有效的运行呢?这时候我们就要引用消息队列来实现这类的需求,这时候就需要一个中间的系统进行分流和解压.消息队列就是一个中间件,需要