Redis用作Sub订阅与发布Pub

2024-03-08 17:50
文章标签 redis 发布 订阅 sub 用作 pub

本文主要是介绍Redis用作Sub订阅与发布Pub,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Redis用作Sub订阅与发布Pub

本作者从下载地址:https://download.csdn.net/download/LongtengGensSupreme/12157626下载redis包解压到本地文件目录:E:\Source\redisfile\Redis-x64-3.2.100,如下图所示

 

 

 

 

为了方便启动,我们在该目录下新建一个 startredis.bat 的文件,

然后将以下内容写入文件:redis-server redis.windows.conf

这个命令其实就是在调用 redis-server.exe 命令来读取 redis.window.conf 的内容,

双击刚才创建好的 startredis.bat 文件,就能成功的看到 Redis 启动,如下图所示:

 

redis-server启动之后放着就可以了。可以使用客户端自带工具来测试redis服务器是否可用,

Redis 自带的一个客户端工具,它可以用来连接到我们当前的 Redis 服务器,点击同一个文件夹下的 redis-cli.exe 文件,启动客户端,如下图

 

 

redis-cli客户端启动成功,如下图所示

 

我们做以下测试:在客户端dos界面输入 set key1 value1,回车,可以看到客户端显示:

 

在输入 get key1 回车,客户端显示:

  

 

通过上述工作,我们便在 Windows 的环境下安装好了Redis,我们的准备工作已完成。下面添加简单的使用Redis用作Sub订阅与发布Pub的案例,

以商品购买为案例,下单--》增加积分--》发送购买成功短信通知,如下:

1、新建控制台项目net console 控制台或者net core console控制台都可以,本文使用的是net core console控制台,取名 NetCoreConsoleTest,

在项目下添加积分类Order.cs和短信通知类SMS.cs

积分类Order.cs

using System;namespace NetCoreConsoleTest
{/// <summary>/// 积分处理/// </summary>public class Order{/// <summary>/// 积分订单/// </summary>public void AddOrder(string sn) {System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));Console.WriteLine($"订单 {sn} 处理积分完成");}}
}

短信通知类SMS.cs

using System;namespace NetCoreConsoleTest
{/// <summary>/// 短信处理/// </summary>public class SMS{/// <summary>/// 短信订单/// </summary>public void AddSMS(string sn){System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));Console.WriteLine($"订单 {sn} 处理发送短信完成");}}
}

NetCoreConsoleTest的Program.cs测试

using System;
using System.Diagnostics;namespace NetCoreConsoleTest
{class Program{static void Main(string[] args){Stopwatch stopwatch = new Stopwatch();stopwatch.Start();Console.WriteLine("...........网购处理过程............");string sn = $"WG{DateTime.Now.ToString("yyyMMddHHmmssfffffff")}";Console.WriteLine("...........处理订单............");Console.WriteLine($"订单 {sn} 处理完成");System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));#region 一般使用Console.WriteLine(".......................");Console.WriteLine("...........处理订单积分............");Order order = new Order();order.AddOrder(sn);Console.WriteLine(".......................");Console.WriteLine("...........处理订单发送短息............");SMS sMS = new SMS();sMS.AddSMS(sn);#endregionstopwatch.Stop();Console.WriteLine($"...........网购完成,总共用时{stopwatch.ElapsedMilliseconds}............");Console.ReadKey();}}
}

测试结果:

可以看到整个过程在3秒左右,

下面使用Redis用作Sub订阅与发布Pub

1、项目NetCoreConsoleTest,NuGet程序包管理,添加 StackExchange.Redis,然后添加SubAndPub.cs

using StackExchange.Redis;
using System;
namespace NetCoreConsoleTest
{/// <summary>/// 订阅与发布/// </summary>public class SubAndPub{ConnectionMultiplexer multiplexer;public SubAndPub(){multiplexer = ConnectionMultiplexer.Connect("localhost:6379");}/// <summary>/// 订阅/// </summary>public void Sub(Action<RedisChannel, RedisValue> handler){ISubscriber subscriber = multiplexer.GetSubscriber();subscriber.Subscribe("pub_sub", handler);}/// <summary>/// 发布/// </summary>public void Pub(RedisValue message){ISubscriber subscriber = multiplexer.GetSubscriber();subscriber.Publish("pub_sub", message);}}
}

2、添加控制台项目OrderForm和SMSForm

项目OrderForm

using NetCoreConsoleTest;
using System;namespace OrderForm
{public class Program{static void Main(string[] args){Console.WriteLine("积分");SubAndPub subAndPub = new SubAndPub();subAndPub.Sub((a, b) =>{System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));Console.WriteLine($"订单 {b}, 处理积分完成");});Console.ReadKey();}}
}

项目SMSForm

using NetCoreConsoleTest;
using System;namespace SMSForm
{public class Program{static void Main(string[] args){Console.WriteLine("短信");SubAndPub subAndPub = new SubAndPub();subAndPub.Sub((a, b) =>{System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));Console.WriteLine($"订单 {b} 发送短信完成");});Console.ReadKey();}}
}

NetCoreConsoleTest的Program中修改为如下

using StackExchange.Redis;
using System;
using System.Diagnostics;namespace NetCoreConsoleTest
{class Program{static void Main(string[] args){Stopwatch stopwatch = new Stopwatch();stopwatch.Start();#region pub sub 订阅发布string sn = null;SubAndPub subAndPub = new SubAndPub();for (int i = 0; i < 20; i++){sn = $"WG{DateTime.Now.ToString("yyyMMddHHmmssfffffff")}";Console.WriteLine($"生成第 {i} 个订单,订单号:{sn}");Console.WriteLine("...........处理订单............");Console.WriteLine($"订单 {sn} 处理完成");System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));//发布subAndPub.Pub(sn);System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));}#endregionstopwatch.Stop();Console.WriteLine($"...........网购完成,总共用时{stopwatch.ElapsedMilliseconds}............");Console.ReadKey();}}
}

生成上述NetCoreConsoleTest,OrderForm和SMSForm三个项目,然后启动redis服务器,先启动OrderForm和SMSForm项目,然后启动 NetCoreConsoleTest项目,运行结果

完整代码:https://download.csdn.net/download/LongtengGensSupreme/12254559

这篇关于Redis用作Sub订阅与发布Pub的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/787909

相关文章

Redis 命令详解与实战案例

《Redis命令详解与实战案例》本文详细介绍了Redis的基础知识、核心数据结构与命令、高级功能与命令、最佳实践与性能优化,以及实战应用场景,通过实战案例,展示了如何使用Redis构建高性能应用系统... 目录Redis 命令详解与实战案例一、Redis 基础介绍二、Redis 核心数据结构与命令1. 字符

SpringBoot18 redis的配置方法

《SpringBoot18redis的配置方法》本文介绍在SpringBoot项目中集成和使用Redis的方法,包括添加依赖、配置文件、自定义序列化方式、使用方式、实际使用示例、常见操作总结以及注意... 目录一、Spring Boot 中使用 Redis1. 添加依赖2. 配置文件3. Redis 配置类

Redis中群集三种模式的实现

《Redis中群集三种模式的实现》Redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1. Redis三种模式概述2、Redis 主从复制2.1 主从复制的作用2.2 主从复制流程2

Redis的安全机制详细介绍及配置方法

《Redis的安全机制详细介绍及配置方法》本文介绍Redis安全机制的配置方法,包括绑定IP地址、设置密码、保护模式、禁用危险命令、防火墙限制、TLS加密、客户端连接限制、最大内存使用和日志审计等,通... 目录1. 绑定 IP 地址2. 设置密码3. 保护模式4. 禁用危险命令5. 通过防火墙限制访问6.

深入理解Redis线程模型的原理及使用

《深入理解Redis线程模型的原理及使用》Redis的线程模型整体还是多线程的,只是后台执行指令的核心线程是单线程的,整个线程模型可以理解为还是以单线程为主,基于这种单线程为主的线程模型,不同客户端的... 目录1 Redis是单线程www.chinasem.cn还是多线程2 Redis如何保证指令原子性2.

Docker + Redis 部署集群的实现步骤

《Docker+Redis部署集群的实现步骤》本文详细介绍了在三台服务器上部署高可用Redis集群的完整流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、环境准备1. 服务器规划(3 台服务器)2. 防火墙配置(三台服务器均执行)3. 安装 docke

Redis中删除策略的几种实现方式

《Redis中删除策略的几种实现方式》本文详细介绍了Redis的过期键删除策略和内存淘汰策略,过期键删除策略包括定时删除、惰性删除和定期删除,具有一定的参考价值,感兴趣的可以了解一下... 目录前言一、设计背景:为什么需要删除策略?二、第一类:过期键的 3 种核心删除策略1. 定时删除(Timed Dele

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三