.Net高并发解决思路

首先在windows上安装好Redis,RabbitMQ

这里写图片描述


Redis-cli使用示例

这里写图片描述

这里写图片描述


ModelContext.cs代码:

在 Package Manager Console 下运行命令 Enable-Migrations
这个命令将在项目下创建文件夹 Migrations

The Configuration class 这个类允许你去配置如何迁移,对于本文将使用默认的配置(在本文中因为只有一个 Context, Enable-Migrations 将自动对 context type 作出适配);
An InitialCreate migration (本文为201702220232375_20170222.cs)这个迁移之所以存在是因为我们之前用 Code First 创建了数据库, 在启用迁移前,scaffolded migration 里的代码表示在数据库中已经创建的对象,本文中即为表 Person(列 Id 和 Name). 文件名包含一个 timestamp 以便排序(如果之前数据库没有被创建,那么 InitialCreate migration 将不会被创建,相反,当我们第一次调用 Add-Migration 的时候所有表都将归集到一个新的 migration 中)

多个实体锁定同一数据库

当使用 EF6 之前的版本时,只会有一个 Code First Model 被用来生成/管理数据库的 Schema, 这将导致每个数据库只会有一张 __MigrationsHistory 表,从而无法辨别实体与模型的对应关系。

从 EF6 开始,Configuration 类将会包含一个 ContextKey 属性,它将作为每一个 Code First Model 的唯一标识符, __MigrationsHistory 表中一个相应地的列允许来自多个模型(multiple models)的实体共享表(entries),默认情况下这个属性被设置成 context 的完全限定名。

定制化迁移

在 Package Manager Console 中运行命令 Add-Migration XXXXXXXXX
生成的迁移如下

 

Configuration.cs代码:

 

我们对迁移做些更改:

以下是本项目无关的其他示例:

 

在 Package Manager Console 中运行命令 Update-Database –Verbose


消费者端,用来把消息队列里的数据写入数据库

MqHelper.cs代码:

 

Program.cs代码:

 


模拟并发的MVC网站,写入队列

HomeController.cs代码

 


MqPublish.cs类

 

RedisHelper.cs代码:

 

Index.cshtml内容:

 

Startup.cs代码:

 

Web.config

 


运行结果如图:

这里写图片描述


这里写图片描述


运行消费者端(控制台运用程序)
这里写图片描述


这里写图片描述

from: https://blog.csdn.net/andrewniu/article/details/82856702