通過減少生成內容所需的工作,緩存可以顯著提高應用的性能和可伸縮性,緩存對不經常更改的數據效果最佳,緩存生成的數據副本的返回速度可以比從原始源返回更快。ASP.NET Core 支持多種不同的緩存,最簡單的緩存基於 IMemoryCache,它表示存儲在 Web 伺服器記憶體中的緩存。 在包含多個伺服器 ...
通過減少生成內容所需的工作,緩存可以顯著提高應用的性能和可伸縮性,緩存對不經常更改的數據效果最佳,緩存生成的數據副本的返回速度可以比從原始源返回更快。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 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #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 404 /404.html; } }
網站配置
網址2設置,網站1同樣設置,訪問localhost:8084可以看到效果,刷新頁面訪問到網站1和網站2,兩個網站里的內容改成不一樣。
效果圖
源碼地址
https://github.com/jasonhua95/samll-project/tree/master/DistributedSession
其他分散式文章
不同的分散式文章,用actor實現分散式,Actor模型(分散式編程)。