通过减少生成内容所需的工作,缓存可以显著提高应用的性能和可伸缩性,缓存对不经常更改的数据效果最佳,缓存生成的数据副本的返回速度可以比从原始源返回更快。ASP.NET Core 支持多种不同的缓存,最简单的缓存基于 IMemoryCache,它表示存储在 Web 服务器内存中的缓存。 在包含多个服务器的场合,要保证缓存数据的一致性,这个时候需要分布式缓存,也就是把数据从缓存内存中保存到外部缓存服务器中,例如reids,云等,内存中和分布式缓存将缓存项存储为键 / 值对。

创建.net core项目

修改Startup.cs

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
////内存中缓存,完全可以替代session
//services.AddMemoryCache(); //redis分布式缓存
services.AddDistributedRedisCache(options =>
{
options.Configuration = "127.0.0.1:32768";//redis的端口地址
options.InstanceName = "simple";
}); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}

修改HomeController.cs

public class HomeController : Controller
{
#region 内存中缓存
//private IMemoryCache _cache; //public HomeController(IMemoryCache memoryCache)
//{
// _cache = memoryCache;
//}
#endregion private readonly IDistributedCache _cache;
public HomeController(IDistributedCache cache)
{
_cache = cache;
} public IActionResult Index()
{
return View();
} [HttpPost]
public JsonResult SetSession(string key, string value)
{
//_cache.Set(key, value); //内存中缓存 _cache.SetString(key, value);
return Json(new { success = true });
} [HttpGet]
public IActionResult GetSession(string key)
{
//string value = _cache.Get<string>(key); //内存中缓存 string value = _cache.GetString(key);
return Json(new { success = true, data = value });
}
}

Nginx负载均衡

nginx的安装这里不做讲解,下载安装就可以了,redis的安装这里也不做讲解。nginx配置如下

#user  nobody;
worker_processes ;
events {
worker_connections ;
} http {
include mime.types;
default_type application/octet-stream; sendfile on;
#tcp_nopush on; #keepalive_timeout ;
keepalive_timeout ; #gzip on; #项目发布的地址
upstream myredis.run {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
} server {
listen 8084; #端口
server_name localhost; #网址
location / {
root html;
index index.html index.htm;
proxy_pass http://myredis.run; #需要与upstream后面的一致
}
#error_page /.html;
} }

网站配置

网址2设置,网站1同样设置,访问localhost:8084可以看到效果,刷新页面访问到网站1和网站2,两个网站里的内容改成不一样。

效果图

源码地址

https://github.com/jasonhua95/samll-project/tree/master/DistributedSession

其他分布式文章

不同的分布式文章,用actor实现分布式,Actor模型(分布式编程)

.net core中的分布式缓存和负载均衡的更多相关文章

  1. 记录core中GRPC长连接导致负载均衡不均衡问题 二,解决长连接问题

    题外话: 1.这几天收到蔚来的面试邀请,但是自己没做准备,并且远程面试,还在上班时间,再加上老东家对我还不错.没想着换工作,导致在自己工位上做算法题不想被人看见,然后非常紧张.估计over了.不过没事 ...

  2. .NET Core应用中使用分布式缓存及内存缓存

    .NET Core针对缓存提供了很好的支持 ,我们不仅可以选择将数据缓存在应用进程自身的内存中,还可以采用分布式的形式将缓存数据存储在一个“中心数据库”中.对于分布式缓存,.NET Core提供了针对 ...

  3. ASP.NET Core中使用Cache缓存

    ASP.NET Core中使用Cache缓存 缓存介绍: 通过减少生成内容所需的工作,缓存可以显著提高应用的性能和可伸缩性. 缓存对不经常更改的数据效果最佳. 缓存生成的数据副本的返回速度可以比从原始 ...

  4. MapReduce中的分布式缓存使用

    MapReduce中的分布式缓存使用 @(Hadoop) 简介 DistributedCache是Hadoop为MapReduce框架提供的一种分布式缓存机制,它会将需要缓存的文件分发到各个执行任务的 ...

  5. ASP.NET Core中的Http缓存

    ASP.NET Core中的Http缓存 Http响应缓存可减少客户端或代理对web服务器发出的请求数.响应缓存还减少了web服务器生成响应所需的工作量.响应缓存由Http请求中的header控制. ...

  6. Windows平台分布式架构实践负载均衡

    Windows平台分布式架构实践 - 负载均衡 概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Li ...

  7. Windows平台分布式架构实践 - 负载均衡(转载)

    Windows平台分布式架构实践 - 负载均衡 概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Li ...

  8. Windows平台分布式架构实践 - 负载均衡(下)

    概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...

  9. .Net微服务实践(四)[网关]:Ocelot限流熔断、缓存以及负载均衡

    目录 限流 熔断 缓存 Header转化 HTTP方法转换 负载均衡 注入/重写中间件 后台管理 最后 在上篇.Net微服务实践(三)[网关]:Ocelot配置路由和请求聚合中我们介绍了Ocelot的 ...

随机推荐

  1. idea基本使用1

    首先推荐两个快捷键 alt+Ent        相当于eclipse中的crtl+1 alt+ins         :能创建包,类等,还能生成getter,setter,和构造函数 首先创建一个w ...

  2. vue简单的导航栏

    <style> img{ display:block; margin:0 auto; width:500px; height:500px; } #app li{ list-style: n ...

  3. 002.[python学习]python编码规范pep8学习——PEP8第一部分代码布局

    关于PEP8的详细说明可以参考官方原文:http://legacy.python.org/dev/peps/pep-0008/ 我参考官方文档及其他文章,摘出相关内容而得此文章,具体参考其他文章见文中 ...

  4. Linux命令、脚本

    1.传文件 FTP/SFTP:ftp 用户名@远程ip SCP:注意ip后有个   : 本地文件发到远程 scp 本地文件 用户名@远程ip:远程路径   远程文件发到本地 scp 用户名@远程ip: ...

  5. LoadRunner 安装汉化后的一些问题

    我装好LoadRunner11后,按照下面的方法破解: 1.  把loadrunner相关程序全部退出: 2.  用LR8.0中的mlr5lprg.dll.lm70.dll覆盖LR9.5安装目录下“b ...

  6. Monggodb基础

    MongoDB 查询文档使用 find() 方法. find() 方法以非结构化的方式来显示所有文档. 语法 MongoDB 查询数据的语法格式如下: db.collection.find(query ...

  7. 判断IOS、Android访问

    /*判断手机访问是Android还是IOS*/ $user_agent = $_SERVER['HTTP_USER_AGENT']; if(stripos($user_agent, "iPh ...

  8. Android Jetpack 组建介绍(一)——Lifecycler

    转自带你领略Android Jetpack组件的魅力 Android Jetpack 对于任何一个产品来说,我们开发中都会面对哪些问题?如:产品交互.用户体验.代码结构.数据获取.数据存储.网络优化. ...

  9. cmd命令行模式开启或关闭 windows功能 (转载)

    1,用管理员身份运行cmd. 2,运行 dism /online  /Get-Features >C:\1.txt,这样会在C盘生成一个txt文件,文件内容是功能列表,可以对照“打开或关闭win ...

  10. 42_redux_counter应用_redux异步版本

    前言: redux默认不支持异步编程,需要下载redux插件(异步中间件) 如何下载: npm install --save redux-thunk 项目结构: 代码: import React, { ...