针对Redis队列的理解,实例操作

http://rfyiamcool.blog.51cto.com/1030776/1131271

为什么要使用消息队列

用我的话来说, 队列特点是先进先出,在任务调度时,有时候需要保证先进入的任务先执行,所以需要使用队列。

下面这段话来自VMWare的网站,个人觉得关于消息队列的作用的概括简明扼要,遂摘录至此:

现代的互联网应用大量地使用了消息队列(Messaging)。消息队列不仅被用于系统内部组件之间的通信,同时也被用于系统跟其它服务之间的交互。消息队列的使用可以增加系统的可扩展性、灵活性和用户体验。非基于消息队列的系统,其运行速度取决于系统中最慢的组件的速度(注:短板效应)。而基于消息队列可以将系统中各组件解除耦合,这样系统就不再受最慢组件的束缚,各组件可以异步运行从而得以更快的速度完成各自的工作。

【更新2012-6-28】

刚知道原来虎扑网也使用了消息队列(RabbitMQ),来看看他们的观点:

消息队列能够将业务逻辑解耦,调用方只需要下达命令而不用等待整个逻辑执行完毕。除此之外消息队列也可以抑制性能波峰的产生,在瞬时业务增长产生时保持性能曲线的平滑

【更新2012-6-29】

博文“使用django+celery+RabbitMQ实现异步执行”中展示了一个消息队列的典型应用:

发帖之后只需给队列发送一条消息, 告诉队列“我发帖子了”,然后把发帖的结果返回给用户。 这时另一个叫做worker的进程会取出这条消息并执行那100条INSERT查询。这样,推送通知的操作在后台异步执行, 用户就能立即看到发帖结果。更精彩的是,可以运行多个worker实现分布式,多繁重的任务都不在话下了。


在ptyhon中,可以用下ztq,这个我没有用,对于我来说还是复杂点~  

ZTQ:Z Task Queue

https://github.com/everydo/ztq


在php中的应用


 
 
  1. 入队操作

  2. $redis = new Redis();

  3. $redis->connect('127.0.0.1',6379);

  4. while(True){

  5. try{

  6. $value = 'value_'.date('Y-m-d H:i:s');

  7. $redis->LPUSH('key1',$value);

  8. sleep(rand()%3);

  9. echo $value."\n";

  10. }catch(Exception $e){

  11. echo $e->getMessage()."\n";

  12. }

  13. }

  14. 出队操作

  15. $redis = new Redis();

  16. $redis->pconnect('127.0.0.1',6379);

  17. while(True){

  18. try{

  19. echo $redis->LPOP('key1')."\n";

  20. }catch(Exception $e){

  21. echo $e->getMessage()."\n";

  22. }

  23. sleep(rand()%3);

  24. }

我的python应用


 
 
  1. 入队列

  2. #!/usr/bin/env python  

  3. import time  

  4. from redis import Redis  

  5. redis = Redis(host='127.0.0.1', port=6379)  

  6. while True:  

  7. now = time.strftime("%Y/%m/%d %H:%M:%S")  

  8. redis.lpush('test_queue', now)  

  9. time.sleep(1)  


 
 
  1. #!/usr/bin/env python  

  2. import sys  

  3. from redis import Redis  

  4. redis = Redis(host='127.0.0.1', port=6379)  

  5. while True:  

  6. res = redis.rpop('test_queue')  

  7. if res == None:  

  8. pass  

  9. else:  

  10. print str(res)  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值