侧边栏壁纸
博主昵称
梦之中小俊

以前高中时,羡慕大学考试只要及格就行;现在大学了,怀念高中考试及不及格都行??

PHP

thinkphp 实现redis简单的消息队列

梦之中小俊
2021-07-16 / 0 评论 / 1216 阅读 / 推送成功!

thinkphp 实现redis简单的消息队列

本章简单的实现。消息队列的入列和出列
1.入列,入列作为生产者,只管尽情的成产即可,无需考虑其他 (秒杀、抢购场景除外)。

此次我们假如有十个用户进入队列。

 //入列,生产者
public function into()
{
    $redis  = new Redis();
    //业务场景不在此阐述
    for ( $i = 1 ; $i <= 10 ; $i++ ){
        $user = array('user_id'=>$i,'username'=>'demo'.$i);
        $redis->lPush('data',json_encode($user));
    }
}

2.查看队列中的所有数据

//查看所有数据
public function data()
{
    $redis  = new Redis();
    dump($redis->lRange('data',0,-1));
}

结果

array(10) {
  [0] => string(34) "{"user_id":10,"username":"demo10"}"
  [1] => string(32) "{"user_id":9,"username":"demo9"}"
  [2] => string(32) "{"user_id":8,"username":"demo8"}"
  [3] => string(32) "{"user_id":7,"username":"demo7"}"
  [4] => string(32) "{"user_id":6,"username":"demo6"}"
  [5] => string(32) "{"user_id":5,"username":"demo5"}"
  [6] => string(32) "{"user_id":4,"username":"demo4"}"
  [7] => string(32) "{"user_id":3,"username":"demo3"}"
  [8] => string(32) "{"user_id":2,"username":"demo2"}"
  [9] => string(32) "{"user_id":1,"username":"demo1"}"
}

3.出列,出列为消费者,同样,尽管尽情的消费即可,只要队列有数据就进行消费,勤勤恳恳的工作。不用考虑什么时候有数据不用考虑多少数据,只要有数据就干掉他。

//消费者
public function out()
{
    $redis  = new Redis();
    //获取队列长度
    $count  = $redis->handler()->llen('data');
    for ( $i=0; $i < $count; $i++){
        //拿出队列中第一个json信息
        $user = $redis->lIndex('data',0);
        //解析成数组
        $user_info = json_decode($user,true);
        //此处进行业务处理。
        echo "
".$user_info['username']."出队列成功
"; //处理成功,将此信息移除队列。 $redis->lPop('data'); } }

结果:

demo10出队列成功

demo9出队列成功

demo8出队列成功

demo7出队列成功

demo6出队列成功

demo5出队列成功

demo4出队列成功

demo3出队列成功

demo2出队列成功

demo1出队列成功

 

本文共 个字数,平均阅读时长 ≈ 分钟,您已阅读:0时0分0秒。
3

打赏

评论 (0)

OωO
  • ::(呵呵)
  • ::(哈哈)
  • ::(吐舌)
  • ::(太开心)
  • ::(笑眼)
  • ::(花心)
  • ::(小乖)
  • ::(乖)
  • ::(捂嘴笑)
  • ::(滑稽)
  • ::(你懂的)
  • ::(不高兴)
  • ::(怒)
  • ::(汗)
  • ::(黑线)
  • ::(泪)
  • ::(真棒)
  • ::(喷)
  • ::(惊哭)
  • ::(阴险)
  • ::(鄙视)
  • ::(酷)
  • ::(啊)
  • ::(狂汗)
  • ::(what)
  • ::(疑问)
  • ::(酸爽)
  • ::(呀咩爹)
  • ::(委屈)
  • ::(惊讶)
  • ::(睡觉)
  • ::(笑尿)
  • ::(挖鼻)
  • ::(吐)
  • ::(犀利)
  • ::(小红脸)
  • ::(懒得理)
  • ::(勉强)
  • ::(爱心)
  • ::(心碎)
  • ::(玫瑰)
  • ::(礼物)
  • ::(彩虹)
  • ::(太阳)
  • ::(星星月亮)
  • ::(钱币)
  • ::(茶杯)
  • ::(蛋糕)
  • ::(大拇指)
  • ::(胜利)
  • ::(haha)
  • ::(OK)
  • ::(沙发)
  • ::(手纸)
  • ::(香蕉)
  • ::(便便)
  • ::(药丸)
  • ::(红领巾)
  • ::(蜡烛)
  • ::(音乐)
  • ::(灯泡)
  • ::(开心)
  • ::(钱)
  • ::(咦)
  • ::(呼)
  • ::(冷)
  • ::(生气)
  • ::(弱)
  • ::(狗头)
泡泡
阿鲁
颜文字
取消
  1. 头像
    6767 Lv.1
    iPhone · Safari
    沙发

    画图

    回复
  2. 头像
    6767 Lv.1
    Windows 10 · Google Chrome
    板凳

    表情

    回复
  3. 头像
    透露 Lv.2
    Android · QQ Browser
    第30楼

    649494848

    回复