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

[经验分享] redis ruby客户端学习(四)

[复制链接]

尚未签到

发表于 2015-7-21 08:54:05 | 显示全部楼层 |阅读模式
  redis是一个快速、稳定的发布/订阅的信息系统。
  这里有相关的介绍
  可以用这个发布订阅系统,实现聊天功能。
  1,假设有两个用户,分别是user1和user2,各创建一个redis连接。



u1 = Redis.new


u2 = Redis.new
  2,u1订阅一个频道channel1



u1.subscribe "channel1" do |on|
on.subscribe do |channel, subscriptions|
puts "Subscribed to ##{channel} (#{subscriptions} subscriptions)"
end
on.message do |channel, msg|
puts "#{channel}: #{msg}"
end
end
  u1进入监听等待状态



#Subscribed to #channel1 (1 subscriptions)
  3,u2发布一条消息



u2.publish 'channel1', 'hello'
  4,u1收到新的消息,并打印出来



#Subscribed to #channel1 (1 subscriptions)
#channel1: hello
  5,block块中,有三种回调类型,已经看到的前2种,subscribe和message,第三种是unsubscribe。



redis.subscribe(:one, :two) do |on|
#channel:当前的频道,subscriptions: 第几个频道
on.subscribe do |channel, subscriptions|
puts "Subscribed to ##{channel} (#{subscriptions} subscriptions)"
end
#channel:当前的频道,message: 消息内容
on.message do |channel, message|
puts "##{channel}: #{message}"
redis.unsubscribe if message == "exit"
end
#
    on.unsubscribe do |channel, subscriptions|
puts "Unsubscribed from ##{channel} (#{subscriptions} subscriptions)"
end
end
  ps:代码来自https://github.com/redis/redis-rb/blob/master/examples/pubsub.rb
  可以在消息定义各种规则,来实现频道的管理。
  6,下面介绍一下发布和订阅相关的一些方法。
  psubscribe。订阅给定的模式。



redis.psubscribe('c*') do |on|
on.psubscribe do |channel, subscriptions|
puts "Subscribed to ##{channel} (#{subscriptions} subscriptions)"
end
on.pmessage do |pattern, channel, message|
puts "##{channel}: #{message}"
redis.unsubscribe if message == "exit"
end
on.punsubscribe do |channel, subscriptions|
puts "Unsubscribed from ##{channel} (#{subscriptions} subscriptions)"
end
end
  和subscribe的区别是参数是匹配的模式,block中的三个方法也对应的变化了。
  
  小结:这个主要介绍了redis中的发布和订阅相关的使用例子。一个用户可以订阅多个频道,也可以向多个频道发布消息。
  

运维网声明 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-88895-1-1.html 上篇帖子: Redis安装与使用 下篇帖子: 【转】NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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