一 . 两种模式简介

  • 发布消息通常有两种模式:队列模式(queuing)和发布订阅模式(qublish-subscribe)。队列模式中,consumers可以同时从服务端读取消息,每个消息纸杯其中一个consumer读到
  • 发布-订阅模式中消息被广播到所有的consumer中,topic中的消息将被分发到组中的一个成员中,同一组中的consumer可以在不同的程序中,也可以在不同的机器上。

1.1.1 生产消费模式(队列模式),(案例生产包子,消费者消费先消费最新生产的)

 127.0.0.1:> lpush bao bao1
(integer)
127.0.0.1:> lpush bao bao2
(integer)
127.0.0.1:> lpush bao bao3
(integer)
127.0.0.1:> lrange bao
) "bao3"
) "bao2"
) "bao1"
127.0.0.1:> lpush bao bao4
(integer)
127.0.0.1:> lpush bao bao6
(integer)
127.0.0.1:> rpop bao
"bao1"
127.0.0.1:> rpop bao
"bao2"
127.0.0.1:> rpop bao
"bao3"
127.0.0.1:> lrange bao
) "bao6"
) "bao4"
127.0.0.1:> lpush bao bao7
(integer)
127.0.0.1:> lpush bao bao8
(integer)

1.1.2 发布订阅模式

Redis发布订阅(Pub/Sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接受消息

Redis 客户端可以订阅任意数量的频道

subscribe dd1 订阅给定的一个或者多个频道的信息                                        
publish dd1 "haha af fadg gdsg" 将消息发送到指定的频道

pubsub numsub dd1

打印频道订阅者数量
pubsub channels 显示订阅频道
punsubscribe 退订多个频道
unsubscribe 退订频道

1.1.3 Redis 事务

事务是一个单独的隔离操作:事务中的所有命令都会序列化,按照序列的执行。事务在执行过程中,不会被其他的客户端发送来的命令请求所打断

原子性:事务中的命令要么全部执行,要么全部不执行

执行过程

  • 开始事务
  • 命令入队
  • 执行事务
siscare 取消事务,放弃执行事务模块内的所有命令
exec 执行所有事务块内的命令
multi 标记一个事务块的开始
unwatch 取消watch命令对所有key的监视
watch key key 监视一个或多个key,如果事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断

Redis-消费模式的更多相关文章

  1. python之redis和memcache操作

    Redis 教程 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据 ...

  2. Redis使用总结(3):实现简单的消息队列

    参考Redis实现简单消息队列 Redis提供了两种方式来作消息队列.一个是使用生产者消费模式模式,另外一个方法就是发布订阅者模式.前者会让一个或者多个客户端监听消息队列,一旦消息到达,消费者马上消费 ...

  3. Redis 小白指南(三)- 事务、过期、消息通知、管道和优化内存空间

    Redis 小白指南(三)- 事务.过期.消息通知.管道和优化内存空间 简介 <Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍> 讲的是 Redis 的介绍,以及如何 ...

  4. Redis实现简单消息队列

    http://www.jianshu.com/p/9c04890615ba 任务异步化 打开浏览器,输入地址,按下回车,打开了页面.于是一个HTTP请求(request)就由客户端发送到服务器,服务器 ...

  5. 异步简析之BlockingCollection实现生产消费模式

    目前市面上有诸多的产品实现队列功能,比如Redis.MemCache等... 其实c#中也有一个基础的集合类专门用来实现生产/消费模式 (生产模式还是建议使用Redis等产品) 下面是官方的一些资料和 ...

  6. Python的Flask框架应用调用Redis队列数据的方法

    转自:http://www.jb51.net/article/86021.htm 任务异步化 打开浏览器,输入地址,按下回车,打开了页面.于是一个HTTP请求(request)就由客户端发送到服务器, ...

  7. 微服务架构-利用Redis特性进行业务解耦

    背景:     接着上篇文章来,上篇文章讲的是如何利用ApplicationContext的事件机制来达到业务解耦,而且这只能作用在单体应用中.在当下这么盛行的微服务架构中,想要再利用此方案做业务解耦 ...

  8. 如何使用REDIS进行微服务间通讯

    如何使用REDIS进行微服务间通讯 尽可能避免service - to - service通信.为此,需要在服务之间推一个消息队列.回顾一下微服务的概念小型的,非常集中的进程彼此独立运行并且易于维护, ...

  9. Redis消息通知

    Redis的消息通知通过列表类型实现,分为两种模式:阻塞式.发布/订阅式: 阻塞式 顾名思义,消息生产者负责生产消息,并将消息放到队列的一端,消息的消费者负责消费消息,从队列的另一端取出消息,然后对其 ...

  10. 【进阶之路】Redis基础知识两篇就满足(一)

    导言 大家好,我是南橘,一名练习时常两年半的java练习生,这是我在博客园的第一篇文章,当然,都是要从别处搬运过来的,不过以后新的文章也会在博客园同步发布,希望大家能多多支持^_^ 这篇文章的出现,首 ...

随机推荐

  1. 异常:error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'

    error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'System. ...

  2. 在Ubuntu14.04中安装Py3和切换Py2和Py3环境

    前几天小编给大家分享了如何安装Ubuntu14.04系统,感兴趣的小伙伴可以戳这篇文章:手把手教你在VMware虚拟机中安装Ubuntu14.04系统.今天小编给大家分享一下在Ubuntu14.04系 ...

  3. 再次学习 Iterator 迭代器 与 Generator 生成器

    Iterator : 返回的结果是:{value, done} function chef(foods){ let i = 0; return { next(){ let done = ( i> ...

  4. shell脚本的if判断语句

    if条件判断语句 if (表达式) #if ( Variable in Array ) 语句1 else 语句2 fi 1.测试数字大小 #!/bin/sh NUM=100 if (( $NUM &g ...

  5. HOJ——T 1867 经理的烦恼

    http://acm.hit.edu.cn/hoj/problem/view?id=1867 Source : HCPC 2005 Spring   Time limit : 2 sec   Memo ...

  6. java之 ------ 几种常见的简单设计模式

    前言: 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.用于解决特定环境下.反复出现的特定问题的解决方式.使用设计模式是为了可重用代码.让代 ...

  7. 指尖上的电商---(10)SolrAdmin中加入多核

    在Solr中有的时候,我们并不仅仅是须要一种形式的索引文件.可能须要多种不同数据的索引文件.这时我们就能够在同一个Solr以下创建 多核. 比方,我们在solr以下想把产品信息和分类信息各存放一个索引 ...

  8. jquery17 DOM操作 : 添加 删除 获取 包装 DOM筛选

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  9. C#与Linux守护进程

    用C#编写Linux守护进程   如果要在Red Hat Enterprise Linux上将.NET Core进程作为后台进程运行,则可以创建自定义systemd单元.今天我将为.NET Core编 ...

  10. 39.Node.js域名解析---DNS模块

    转自:http://www.runoob.com/nodejs/nodejs-module-system.html Node.js DNS 模块用于解析域名.引入 DNS 模块语法格式如下: var ...