Redis-消费模式
一 . 两种模式简介
- 发布消息通常有两种模式:队列模式(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-消费模式的更多相关文章
- python之redis和memcache操作
Redis 教程 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据 ...
- Redis使用总结(3):实现简单的消息队列
参考Redis实现简单消息队列 Redis提供了两种方式来作消息队列.一个是使用生产者消费模式模式,另外一个方法就是发布订阅者模式.前者会让一个或者多个客户端监听消息队列,一旦消息到达,消费者马上消费 ...
- Redis 小白指南(三)- 事务、过期、消息通知、管道和优化内存空间
Redis 小白指南(三)- 事务.过期.消息通知.管道和优化内存空间 简介 <Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍> 讲的是 Redis 的介绍,以及如何 ...
- Redis实现简单消息队列
http://www.jianshu.com/p/9c04890615ba 任务异步化 打开浏览器,输入地址,按下回车,打开了页面.于是一个HTTP请求(request)就由客户端发送到服务器,服务器 ...
- 异步简析之BlockingCollection实现生产消费模式
目前市面上有诸多的产品实现队列功能,比如Redis.MemCache等... 其实c#中也有一个基础的集合类专门用来实现生产/消费模式 (生产模式还是建议使用Redis等产品) 下面是官方的一些资料和 ...
- Python的Flask框架应用调用Redis队列数据的方法
转自:http://www.jb51.net/article/86021.htm 任务异步化 打开浏览器,输入地址,按下回车,打开了页面.于是一个HTTP请求(request)就由客户端发送到服务器, ...
- 微服务架构-利用Redis特性进行业务解耦
背景: 接着上篇文章来,上篇文章讲的是如何利用ApplicationContext的事件机制来达到业务解耦,而且这只能作用在单体应用中.在当下这么盛行的微服务架构中,想要再利用此方案做业务解耦 ...
- 如何使用REDIS进行微服务间通讯
如何使用REDIS进行微服务间通讯 尽可能避免service - to - service通信.为此,需要在服务之间推一个消息队列.回顾一下微服务的概念小型的,非常集中的进程彼此独立运行并且易于维护, ...
- Redis消息通知
Redis的消息通知通过列表类型实现,分为两种模式:阻塞式.发布/订阅式: 阻塞式 顾名思义,消息生产者负责生产消息,并将消息放到队列的一端,消息的消费者负责消费消息,从队列的另一端取出消息,然后对其 ...
- 【进阶之路】Redis基础知识两篇就满足(一)
导言 大家好,我是南橘,一名练习时常两年半的java练习生,这是我在博客园的第一篇文章,当然,都是要从别处搬运过来的,不过以后新的文章也会在博客园同步发布,希望大家能多多支持^_^ 这篇文章的出现,首 ...
随机推荐
- C# 利用反射和特性 来做一些事情
特性代码: [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] public clas ...
- jquery easyui 输入框 禁止输入负数 设置属性data-options="min:0,required:true"
jquery easyui 输入框 禁止输入负数 设置属性data-options="min:0,required:true" <input id="days& ...
- UESTC 1599 wtmsb
这天,AutSky_JadeK看到了n张图片,他忍不住说道:“我TM社保!”. 每张图片有一个社保值,他可以合并两张图片,合并所得的图片的社保值是原来两张图片的社保值之和. 每次合并需要消耗的体力也是 ...
- 【Django】Web框架本质
目录 根据不同的路径返回不同的内容 普通版 函数版 函数进阶版 返回具体的HTML文件 让网页动态起来 服务器和应用程序 wsgiref 模块 @ * 我们可以这样理解:所有的==Web应用本质上就是 ...
- 最长上升子序列(LIS)nlogn模板
参考https://www.cnblogs.com/yuelian/p/8745807.html 注意最长上升子序列用lower_bound,最长不下降子序列用upper_bound 比如123458 ...
- Quartus II sof文件转 jic文件
选择File->Convert Programming Files... Programming File Type选择JTAG Indirect ConfigurationFile(.jic) ...
- DSP开发中遇到的问题 - 类指针未初始化后果
收到RECEIVE_REQ_MSG消息时会运行以下的代码,这里由于某种原因m_receiverSlaverController的值仍为NULL,并没有指向详细的CReceiverSlaverContr ...
- jquery07
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- a标签中的javascript:;是什么
a标签中的javascript:;是什么 一.问题 <a>标签中href="javascript:;"表示什么意思?? <a id="jsPswEdit ...
- es6 -- set 数据结构
ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3 ...