redis ruby客户端学习(四)

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中的发布和订阅相关的使用例子。一个用户可以订阅多个频道,也可以向多个频道发布消息。

时间: 2024-11-06 09:34:01

redis ruby客户端学习(四)的相关文章

redis ruby客户端学习( 二)

接上一篇redis ruby客户端学习( 二) 对于redis的五种数据类型:字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets),上一篇介绍了字符串. 1,哈希(Map) hset.设置 key 指定的哈希集中指定字段的值.如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联.如果字段在哈希集中存在,它将被重写. require "redis" r = Redis.new r.hset 'my_h

redis ruby客户端学习( 三)

接上一篇redis ruby客户端学习( 二) 对于redis的五种数据类型:字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets),上一篇介绍了哈希和列表. 一,集合 mset.添加一个或者多个元素到集合(set)里 require "redis" r = Redis.new r.mset 'my_set', 'value1' scard.返回集合存储的key的基数 (集合元素的数量). r.scard 'my_set

redis ruby客户端学习(一)

一,安装redis服务器 自行解决吧,没什么好说的. 二,安装redis的ruby客户端 这里使用的是redis-rb,自行安装, https://github.com/redis/redis-rb 三,连接服务器 require "redis" r = Redis.new 这是最简单的连接方式,其他方式参见github 四,存取数据 Redis类中的方法和redis命令是一一对应的. 所以github上只给了很少的例子,想用其他的方法,可以去参考redis命令. redis的值(va

redis ruby客户端学习(五)

一,redis是支持事务的,请看这篇介绍. 下面介绍几个ruby实现的命令,multi,exec,discard,watch,unwatch. 1,multi:标记一个事务块开始,exec:执行所有 MULTI 之后发的命令 require 'Redis' r = Redis.new r.set 'a', 1 r.set 'b', 2 r.multi r.set 'a', 3 r.set 'b', 6 r.exec #r.get 'a' #=> "3" #r.get 'b' #

开源中国iOS客户端学习

开源中国iOS客户端学习 续写前言 <开源中国iOS客户端学习>续写前系列博客    http://blog.csdn.net/column/details/xfzl-kykhd.html 开源中国iOS客户端学习——序 说到这款开源软件就得提到她的娘家了--开源中国社区: 开源中国社区简介:开源中国 www.oschina.net 成立于2008年8月,是目前中国最大的开源技术社区.传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现.使用.并交流开源技术的平台.目前开源中国社区已收

Redis学习(一)、安装Redis和客户端

Redis学习(一).安装Redis和客户端 一.Windows安装Redis 1.下载安装包Redis-x64-3.0.504.zip到本地 2.解压 3.打开CMD,切换到解压后的redis目录,然后 C:\Users\Administrator> F:F:\> CD F:\redis\Redis-x64-3.0.504F:\redis\Redis-x64-3.0.504> redis-server.exe redis.windows.conf 4.在不关闭之前的CMD的情况下,再打

redis源码学习(客户端)

大概介绍 redis 客户端设计主要是存储客户的链接,请求,请求解析的命令,执行结果.先看server的结构和client的结构,server里面有多个client,相当于一个服务端可以连多个客户端,服务端根据事件触发模式依次处理客户端的请求. server结构 struct redisServer { /* General */ // 配置文件的绝对路径 char *configfile; /* Absolute config file path, or NULL */ // serverCr

Redis缓存技术学习系列之邂逅Redis

??作为一个反主流的开发者,在某种程度上,我对传统关系型数据库一直有点"讨厌",因为关系型数据库实际上和面向对象思想是完全冲突的,前者建立在数学集合理论的基础上,而后者则是建立在软件工程基本原则的基础上.虽然传统的ORM.序列化/反序列化在一定程度上解决了这种冲突,但是软件开发中关于使用原生SQL语句还是使用ORM框架的争论从来没有停止过.可是实际的业务背景中,是完全无法脱离数据库的,除非在某些特定的场合下,考虑到信息安全因素而禁止开发者使用数据库,在主流技术中数据库是一个非常重要的组

redis 安装配置学习笔记

redis 安装配置学习笔记 //wget http://download.redis.io/releases/redis-2.8.17.tar.gz 下载最新版本 wget http://download.redis.io/redis-stable.tar.gz 首先必须要有 gcc 与 make apt-get install gcc apt-get install make 1.解压 [email protected]:~# tar -xvf redis-stable.tar.gz 2.测