• redis消息队列简单应用


    消息队列出现的原因

    随着互联网的高速发展,门户网站、视频直播、电商领域等web应用中,高并发、大数据已经成为基本的标识。淘宝双11、京东618、各种抢购、秒杀活动、以及12306的春运抢票等,他们这些网站都有一个显著的特点:在短时间内,会涌现出大量的用户(高并发请求),导致并发访问量过大,超过了系统的最大负载能力。一方面可以通过增加服务器数量配置服务器集群实现均衡负载,另外一方面异步操作也被广泛采用。而异步操作中最核心的就是使用消息队列。

    消息队列的优点

    • 异步通信,可以向队列里放入很多消息,在你想要的时候再去处理队列消息。
    • 保证数据的可靠性,消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避数据丢失。消息数据处理的删除是在已经确认处理成功后才会删除。
    • 灵活性和可扩展性以及高并发处理能力,消息队列可以缓解数据处理过程,可以动态扩展多系统来处理消息数据。
    • 减少系统相关耦合度,保证了可恢复性。比如生成订单和处理订单,处理系统可以相互独立,当体系的一部分组件失效也不会影响到整个系统。

    消息队列之redis的简单应用

    结合php,实现redis消息队列的简单应用,主要用到redis三个命令:zAdd、zRange、zDelete。关于这三个命令的含义在此就不再赘述了。
    入库操作:

    <?php
    
    if(!extension_loaded('redis')){
            exit('redis extension is not install!');
    }
        $redis = new Redis();
        $redis->connect('127.0.0.1',6379,300);
        $redis->zAdd("order_queue",time(),'11111');
        $redis->zAdd("order_queue",time(),'22222');
        $redis->zAdd("order_queue",time(),'33333');
        $redis->zAdd("order_queue",time(),'44444');
        $redis->zAdd("order_queue",time(),'55555');
    
        $arr =$redis->zRange("order_queue",0,$redis->zCard("order_queue"));
        print_r($arr);
    打印出:
    Array
    (
        [0] => 11111
        [1] => 22222
        [2] => 33333
        [3] => 44444
        [4] => 55555
    )
    
    
    

    出库操作:

    <?php
    
    $redis = new Redis;
    $redis->connect('127.0.0.1',6379,300);
    
    $curvalue = $redis->zRange("order_queue",0,0);
    echo "当前值:{$curvalue[0]}
    ";
    
    $res=true;
    if($res){
            $redis->zDelete("order_queue",$curvalue[0]);
            echo "队列操作成功
    ";
    }else{
            echo "队列操作失败
    ";
    }
    打印出:
    当前值:11111
    队列操作成功
    
    
    
  • 相关阅读:
    Codeforces Round #646 (Div. 2)【B. Subsequence Hate题解】
    关于MyBatis常见映射异常
    SQL语句汇总(终篇)—— 表联接与联接查询【转载自https://www.cnblogs.com/ghost-xyx/p/3813688.html】
    SQL语句汇总(二)——数据修改、数据查询【转载自https://www.cnblogs.com/ghost-xyx/p/3798362.html】
    浮动元素引起的问题和解决办法
    PHP 神奇的sprintf函数
    关于this,作用域,属性,原型链的一个小练习
    for...of 与 for...in 区别
    ES6 Promise对象then方法链式调用
    ES6通过WeakMap解决内存泄漏问题
  • 原文地址:https://www.cnblogs.com/weblm/p/6028840.html
Copyright © 2020-2023  润新知