当前位置: 首页 > news >正文

Redis开发07:使用stackexchange.redis库实现简单消息队列

一、原理

消息入队(消息生产):
第一次 A
第二次 B     A
第三次 C     B      A消息出队(消息消费):
从右往左开始,依次消费A、B、C结论:简易队列,先进先出

二、代码

class Program
{// Redis 连接配置private static readonly ConnectionMultiplexer Redis =ConnectionMultiplexer.Connect("127.0.0.1:6379");private static readonly IDatabase Database = Redis.GetDatabase();private const string QueueKey = "simple_queue"; // 队列名称(Redis List 的 key,不要和现有的重复)/// <summary>/// 发送消息(生产者)/// </summary>/// <param name="message">消息内容(字符串)</param>public static async Task<bool> ProduceAsync(string message){if (string.IsNullOrEmpty(message)) return false;try{await Database.ListLeftPushAsync(QueueKey, message);Console.WriteLine($"[生产者] 已发送消息: {message}");return true;}catch (Exception ex){Console.WriteLine($"[生产者] 发送失败: {ex.Message}");return false;}}/// <summary>/// 接收消息(消费者) - 阻塞模式(推荐)/// </summary>public static async Task ConsumeAsync(){Console.WriteLine("[消费者] 开始监听消息队列...");while (true){try{var result = await Database.ListRightPopAsync(QueueKey);if (!result.IsNull){string message = result.ToString();Console.WriteLine($"[消费者] 收到消息: {message}");// 在此处处理你的业务逻辑ProcessMessage(message);}}catch (Exception ex){Console.WriteLine($"[消费者] 读取消息出错: {ex.Message}");await Task.Delay(1000); }}}/// <summary>/// 模拟处理消息(业务逻辑方法)/// </summary>private static void ProcessMessage(string message){// 例如:保存到数据库、调用 API 等Console.WriteLine($"[Processor] 已处理消息: {message}");Thread.Sleep(5000);}// --- 主程序示例 ---static async Task Main(string[] args){var isConsume = true;//是否为消费者if (isConsume){// 启动消费者await ConsumeAsync();}else{//启动生产者for (int i = 1; i <= 5; i++){string msg = $"Test message {i} at {DateTime.Now:HH:mm:ss}";await ProduceAsync(msg);await Task.Delay(1000); // 每秒发一条}}}
}

三、效果

http://www.dtcms.com/a/423739.html

相关文章:

  • RabbitMQ的安装集群、镜像队列配置
  • php 网站后台模板zencart外贸网站建设
  • IS-IS 与 OSPF 路由汇总机制:边界、应用与核心差异深度分析报告
  • 福彩双色球第2025113期篮球号码分析
  • 做网站公司 蓝纤科技百姓网二手车
  • Dubbo源码解读与实战-基础知识(上)
  • 专业网站制作公司招聘造一个官方网站
  • 【网络通信】服务器部署服务的时候服务ip配置127.0.0.1和外网ip的区别
  • 【C++】命名空间
  • [特殊字符] LeetCode 143 重排链表(Reorder List)详解
  • 轻量级webgis环境搭建
  • 内网网站搭建教程做平面设计都在那个网站找免费素材
  • 网站备案都有哪些服务类网站模板
  • QT常用快捷键
  • 企业级智能体产业落地实践报告 - 智能体发展展望
  • 建设电子商务平台网站施工企业安全生产评价表下载
  • 如何在 vscode 里配置 MCP 并连接到 Elasticsearch
  • 开源安全管理平台wazuh-安装与配置
  • 开发区建网站外包上海小程序开发与制作公司
  • 常州做网站建设的公司网络营销的优势有哪些?
  • Zookeeper 技术详细介绍
  • 精美个人网站电子商务基础网站建设与维护单项选择题
  • 菜鸟教程网站建设培训网站建设方案说明书
  • 直播间 网站建设南京市建设工程网站
  • 网页设置百度seo外包
  • 塑料餐饮具头部优势,新天力市占率稳步提升
  • 郑州做定制网站的公司自学python需要的软件
  • 每天五分钟深度学习:如何判断神经网络是过拟合还是欠拟合?
  • Supermicro NVIDIA Grace Superchip存储服务器超微ARS-121L-NE316R开箱评测
  • 解决在使用Lombok时maven install 找不到符号的问题