zoukankan      html  css  js  c++  java
  • php+redis实现消息队列

    php+redis消息队列是php+mysql性能不足时的一个中间间处理方案。通过这个中间的处理,保证的数据的可用性和准确性。用于服务器瞬间请求大,数据库压力大的情况。如并发量大导致的超卖、并发量大导致的数据重复情况。

            流程:php接受请求和数据 -> php把数据写入redis队列中(入队) -> shell定时调用php读取队列数据写入mysql(出队)

            实现代码:

    入队:inqueue.php

    <?php
    $redis = new redis();
    $redis->connect('127.0.0.1',6379);
    $redis -> select('1');
    $redis->auth('');
     
    $data = [a,b,c,d,e,f,g,h]; //这里可以是get或post请求过来的数据
    $data = json_encode($data);
    $in = $redis->rpush('queue',$data);
    if($in){
        echo "入队成功";
    }
    

      

    出队:outqueue.php

    #!/usr/bin/php
    <?php
    $redis = new redis();
    $redis->connect('127.0.0.1',6379);
    $redis -> select('1');
    $redis->auth('');
     
    $value = $redis->lpop('queue');
    $value = json_decode($value,true);
    

      

     

    shell process.sh:定时调用outqueue.php脚本

    #进行每分钟调用一次
    * * * * * /usr/local/nginx/html/process.sh
    
    #!/bin/bash
    #file_name : process.sh
    #author : zuoping
    php /usr/local/nginx/html/outqueue.php
    

      

    *如果每分钟调用一次频率不够,可以执行多次调用脚本,如:

    #!/bin/bash
    #file_name : process.sh
    #author : zuoping
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    php /usr/local/nginx/html/outqueue.php
    #这样就一分钟调用了多次了。
    

    查看队列中的当前数据:

    <?php
    $redis = new redis();
    $redis->connect('127.0.0.1',6379);
    $redis -> select('1');
    $redis->auth('');
     
    $list = $redis->lrange('queue',0,-1);
    var_dump($list);
    

      

  • 相关阅读:
    Info.plist的秘密(raywenderlich笔记)
    我所理解的性能测试中负载测试与压力测试的区别
    seo优化
    localStorage,sessionStorage那些事儿
    浏览器cookie那些事儿
    JavaScript--Ajax请求
    javascript-理解原型、原型链
    React Native:从入门到原理
    知道这 20 个正则表达式,能让你少写 1,000 行代码
    程序猿进化必读:让App的运行速度与响应速度趋于一流(iOS)
  • 原文地址:https://www.cnblogs.com/tdalcn/p/10482058.html
Copyright © 2011-2022 走看看