设为首页 收藏本站
查看: 688|回复: 0

[经验分享] redis的订阅发布服务 api简单易用 性能好于icestorm

[复制链接]

尚未签到

发表于 2016-12-20 10:07:21 | 显示全部楼层 |阅读模式
  icestorm的订阅发布服务在我们公司使用了好几年了,使用的也非常稳定成熟了.
  今天在本地的服务器上分别对redis的订阅发布服务 和 icestorm进行了压力测试.
  redis的订阅发布服务性能比icestorm要高一些.
  这次的压力测试主要分为两大块,"消息的接收能力" 和  "接收到消息后的分发能力"
  测试的单条消息数据为20个字节
  接收能力:
  redis            15000次/秒
  icestorm:        10000次/秒
  分发能力:
  订阅者个数   redis         icestorm
  3            5000次/秒      3000次/秒
  6            5000次/秒      2900次/秒
  9            5000次/秒      2900次/秒
  不过redis没提供集群的功能,而icestorm支持集群.
  api介绍:
  消息发布端:
  php:
  <?php
  $redis = new Redis();
  //连接redis server
  $redis->connect('192.168.0.235',6379);
  //第一个参数是你发送消息的channel,有的地方叫做topic,就像对讲机有不同的频率和频道
  //第二个参数是你对这个channel发送消息的具体内容 只能是string类型的
  $redis->publish('channel','i am publishing message');
  ?>
  python:
  import redis
  #连接redis server
  REDIS_CONN =  redis.Redis(host='192.168.0.235',port=6379)
  #第一个参数是你发送消息的channel,有的地方叫做topic,就像对讲机有不同的频率和频道
  #第二个参数是你对这个channel发送消息的具体内容 只能是string类型的
  REDIS_CONN.publish('channel_1', 'i am publishing message')
  消息订阅端:
  python:
  import redis
  #连接redis
  redis_conn = redis.Redis(host='192.168.0.235',port=6379)
  #实例化一个 pubsub 对象
  pubsub_ins = redis_conn.pubsub()
  #订阅你关心的channel
  #
  # api中提供了一种批量订阅的方法
  # pattern为 "ESUN*" 则表示订阅所有ESUN开头的channel
  # pubsub_ins.psubscribe(pattern);
  #
  pubsub_ins.subscribe('channel_1')
  #listen 开始收听该channel的消息 加上这句以后 redis server就会将你订阅的channel的消息发送过来了
  #它将消息存储在 listen2  listen2是一个 yield 
  listen2 =  pubsub_ins.listen()
  while 1:
  #next操作就会将yield中的消息一条一条的取出来了  没有消息会一直阻塞
  msg = listen2.next()
  print msg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-316842-1-1.html 上篇帖子: Redis客户端-Jedis源代码探索 下篇帖子: More Redis internals: Tracing a GET & SET【转】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表