NoSQL之Redis高级应用--发布及订阅消息

原创 2013年12月05日 13:53:18

一.简介

发布订阅(pub/sub)是一种消息通信模式,主要的目的是解除消息发布者和消息订阅者之间的耦合,Redis作为一个pub/sub的server,在订阅者和发布者之间祈祷了消息路由的功能。订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将消息类型称为通道(channel)。当发布者通过publish命令向redis server发送特定类型的消息时,订阅该消息类型的全部client都会收到此消息。

二.pub/sub命令

pub即publish命令:是redis server向监听它的client发布特定消息的命令

sub即subscribe命令:是client用这个命令订阅响应的频道。

我们打开3个session来做一下实验

session1:订阅了tv1这个频道

127.0.0.1:6379> subscribe tv1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "tv1"
3) (integer) 1

session2:订阅tv1 和 tv2两个频道

127.0.0.1:6379> subscribe tv1 tv2
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "tv1"
3) (integer) 1
1) "subscribe"
2) "tv2"
3) (integer) 2
1) "message"
2) "tv1"

session3作为redis的服务端用publish命令来广播自己的消息

127.0.0.1:6379> publish tv1 'hello world'
(integer) 2

首先在tv1的频道广播了一条'hello world'消息,返回2说明有2个client在订阅这个频道,这个时候session1和session2中分别会收到消息。

session1

1) "message"
2) "tv1"
3) "hello world"

session2

1) "message"
2) "tv1"
3) "hello world"

如果在session3中再广播一条消息,只在tv2的频道广播,那么session1不会收到这条消息,而session2会收到,大家可以自己测试



Redis的高级应用-事务处理、持久化、发布与订阅消息、虚拟内存使用

三、事务处理            Redis的事务处理比较简单。只能保证client发起的事务中的命令可以连续的执行,而且不会插入其他的client命令,当一个client在连接中发出multi命令...

redis 高级应用之二(Redis的持久化 和 消息的[pub/sub]发布和订阅)

(4)redis的持久化机制     redis是个支持持久化的内存数据库。也就是说redis要经常把内存中的数据保存到硬盘中来保证持久化。     redis持久化方式有两种:     ①.sn...

redis 高级应用之二(Redis的持久化 和 消息的[pub/sub]发布和订阅)

Redis的持久化机制

Redis高级实用特性(持久化机制、发布订阅消息、虚拟内存的使用)

持久化机制Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化。 snapshotting(快照)也是默认方式 快照是默认的持久化方式。这种方式是将...
  • apple_5
  • apple_5
  • 2017年05月15日 14:04
  • 245

07_NoSQL数据库之Redis数据库:Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存

 事务处理 Redis对事务的支持目前还比较简单。Redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。当一个cli...

06_NoSQL数据库之Redis数据库:Redis的高级应用之登录授权和主从复制

Redis高级实用特征 安全性(登录授权和登录后使用auth授权) 设置客户端连接后进行任何其他指定前需要使用的密码。 警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外...

NoSQL数据库之Redis数据库管理六(Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存)

Redis对事务的支持目前还比较简单。redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。 由于redis是单线程来处理所有client的请求的所...

NoSQL数据库之Redis数据库管理六 (Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存)

NoSQL数据库之Redis数据库管理六 (Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存) 1:事务处理:     Redis对事务的支持目前还是是比较简单的,R...
  • nysyxxg
  • nysyxxg
  • 2015年05月16日 12:30
  • 366

NoSQL数据库之Redis数据库管理五(Redis的常用命令及高级应用)

返回0表示不存在,返回1表示存在   select 数字:表示选择数据库的命令,select 0 表示选择第0个数据库;数据库编号是0-15,一共16个数据库; ...

06_NoSQL数据库之Redis数据库:Redis的高级应用之登录授权和主从复制

06_NoSQL数据库之Redis数据库:Redis的高级应用之登录授权和主从复制 http://blog.csdn.net/tototuzuoquan/article/details/43...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NoSQL之Redis高级应用--发布及订阅消息
举报原因:
原因补充:

(最多只允许输入30个字)