Redis学习笔记~实现消息队列比MSMQ更方便

简介:

什么是队列:简单的说就是数据存储到一个空间里(可以是内存,也可以是物理文件),先存储的数据对象,先被取出来,这与堆栈正好相反,消息队列也是这样,将可能出现高并发的数据进行队列存储,并按着入队的顺序依次处理,实现消息队列的工具有很多,如微软的MSMQ,及一些开源的KV存储工具,今天主要介绍用Redis实现消息队列。

这是我的redis项目结构

image

redis服务有一个console的程序,可以支持在windows和linux下运行。

我用MVC应用程序来作这个例子,由表单向内存中写信息,然后每5秒中从内存中将消息取出来,看代码

/// <summary>
  /// 消息对象类型
  /// </summary>
  public class MessageQuene
  {
      static System.Timers.Timer timer = new System.Timers.Timer(5000);
      public static ChatModels CurrentChatModels = new ChatModels();
      static Redis.Utils.RedisClient redisClient;
      static MessageQuene()
      {
          redisClient = new Redis.Utils.RedisClient();
          timer.AutoReset = true;
          timer.Enabled = true;
          timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);//subscribe a event
          timer.Start();

      }
      private static void timer_Elapsed(object sender, ElapsedEventArgs e)
      {
          CurrentChatModels = (ChatModels)redisClient.LeftPop("MessageQuene");
      }
  }

前台显示的action

public ActionResult Index()
 {
     ViewData["pop"] = MessageQuene.CurrentChatModels == null ? "没?有D记?录?" : MessageQuene.CurrentChatModels.Chat;
     ViewData["MSMQ"] = redisClient.ListRange("MessageQuene") == null
       ? new List<ChatModels>()
       : redisClient.ListRange("MessageQuene").Cast<ChatModels>().ToList();

}

表单提交的action

image

事件上,如果我们在项目中用到消息队列时,可以直接使用ViewData["pop"]这个对象,它就是当前取出的队列元素,我们可以对它进行数据操作等。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:Redis学习笔记~实现消息队列比MSMQ更方便,如需转载请自行联系原博主。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
消息中间件 存储 负载均衡
Redis使用ZSET实现消息队列使用总结二
Redis使用ZSET实现消息队列使用总结二
60 0
|
4月前
|
存储 NoSQL Redis
Redis系列学习文章分享---第十六篇(Redis原理1篇--Redis数据结构-动态字符串,insert,Dict,ZipList,QuickList,SkipList,RedisObject)
Redis系列学习文章分享---第十六篇(Redis原理1篇--Redis数据结构-动态字符串,insert,Dict,ZipList,QuickList,SkipList,RedisObject)
75 1
|
24天前
|
消息中间件 存储 NoSQL
剖析 Redis List 消息队列的三种消费线程模型
Redis 列表(List)是一种简单的字符串列表,它的底层实现是一个双向链表。 生产环境,很多公司都将 Redis 列表应用于轻量级消息队列 。这篇文章,我们聊聊如何使用 List 命令实现消息队列的功能以及剖析消费者线程模型 。
68 20
剖析 Redis List 消息队列的三种消费线程模型
|
4月前
|
NoSQL Java Redis
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
69 0
|
4月前
|
存储 消息中间件 缓存
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
80 0
|
2月前
|
缓存 NoSQL 关系型数据库
Redis学习总结
Redis学习总结
33 1
|
2月前
|
消息中间件 NoSQL Redis
Redis Stream消息队列之基本语法与使用方式
这篇文章详细介绍了Redis Stream消息队列的基本语法和使用方式,包括消息的添加、读取、删除、修剪以及消费者组的使用和管理,强调了其在消息持久化和主备复制方面的优势。
46 0
|
3月前
|
消息中间件 存储 NoSQL
Redis使用ZSET实现消息队列使用总结一
Redis使用ZSET实现消息队列使用总结一
70 0
|
4月前
|
存储 NoSQL 安全
Redis系列学习文章分享---第十五篇(Redis最佳实践--设计优雅的key+合适的数据结构+持久化如何配置+慢查询问题解决)
Redis系列学习文章分享---第十五篇(Redis最佳实践--设计优雅的key+合适的数据结构+持久化如何配置+慢查询问题解决)
68 1
|
4月前
|
缓存 负载均衡 NoSQL
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
72 1
下一篇
无影云桌面