﻿
{"id":15368,"date":"2020-04-20T19:28:56","date_gmt":"2020-04-20T19:28:56","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=15368"},"modified":"2020-04-20T19:28:56","modified_gmt":"2020-04-20T19:28:56","slug":"redis-yazi-serisi-13-asp-net-corede-session-icin-redis-cache-kullanimi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/redis-yazi-serisi-13-asp-net-corede-session-icin-redis-cache-kullanimi\/","title":{"rendered":"Redis Yaz\u0131 Serisi 13 &#8211; Asp.NET Core&#8217;de Session \u0130\u00e7in Redis Cache Kullan\u0131m\u0131"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bir web uygulamas\u0131n\u0131n yay\u0131nland\u0131\u011f\u0131 host \u00fczerinde olu\u015fturulan sessionlar\u0131n uygulama yeniden ba\u015flat\u0131ld\u0131\u011f\u0131 durumlarda kaybolmas\u0131 ka\u00e7\u0131n\u0131lmazd\u0131r. Bu durum belle\u011fin temizlenmesi a\u00e7\u0131s\u0131ndan iyiye alamet olarak yorumlanabilsede esas\u0131nda session&#8217;daki verilerin kayb\u0131 s\u00f6z konusu olaca\u011f\u0131ndan dolay\u0131 pekte istenilen bir durum olmasa gerek. Dolay\u0131s\u0131yla b\u00f6yle bir ahvale istinaden sessionlar\u0131n in-memory&#8217;de tutulmas\u0131ndan ka\u00e7\u0131n\u0131lmas\u0131 ve herhangi bir distributed memory&#8217;de depolanmas\u0131 her a\u00e7\u0131dan daha tercih edilebilir g\u00f6z\u00fckmektedir.<\/p>\n<p>Bizler bu i\u00e7eri\u011fimizde Asp.NET Core uygulamalar\u0131nda session&#8217;lar\u0131n distributed cache olarak Redis server&#8217;da nas\u0131l storage edilebilece\u011fini inceleyece\u011fiz. Bunun i\u00e7in herhangi bir Asp.NET Core uygulamas\u0131na <a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.Extensions.Caching.Redis\" rel=\"noopener noreferrer\" target=\"_blank\">Microsoft.Extensions.Caching.Redis<\/a> k\u00fct\u00fcphanesinin dahil edilmesi gerekmektedir.<\/p>\n<p>\u0130lgili k\u00fct\u00fcphaneyi y\u00fckledikten sonra &#8216;Startup.cs&#8217; dosyas\u0131nda a\u015fa\u011f\u0131daki gibi entegrasyonun yap\u0131lmas\u0131 gerekmektedir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class Startup\r\n    {\r\n        public void ConfigureServices(IServiceCollection services)\r\n        {\r\n            .\r\n            .\r\n            .\r\n            services.AddDistributedRedisCache(options =&gt;\r\n            {\r\n                options.InstanceName = &quot;session&quot;;\r\n                options.Configuration = &quot;localhost:1453&quot;;\r\n            });\r\n            services.AddSession(options =&gt; options.IdleTimeout = TimeSpan.FromMinutes(20));\r\n            .\r\n            .\r\n            .\r\n        }\r\n\r\n        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\r\n        {\r\n            .\r\n            .\r\n            .\r\n            app.UseSession();\r\n            .\r\n            .\r\n            .\r\n        }\r\n    }\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelersek e\u011fer 8. sat\u0131rda &#8216;AddDistributedRedisCache&#8217; metodu ile session&#8217;lar\u0131n hangi Redis server&#8217;da tutulaca\u011f\u0131na dair gerekli konfig\u00fcrasyonlar yap\u0131lmaktad\u0131r. 13. sat\u0131rda ise session servisi eklenmekte ve 24. sat\u0131rda middleware olarak devreye sokulmaktad\u0131r.<\/p>\n<p>Bu entegrasyonlar neticesinde uygulamada kullan\u0131lan t\u00fcm session&#8217;lar direkt olarak Redis sunucusunda cache edilecektirler. B\u00f6ylece uygulaman\u0131n herhangi bir sebepten dolay\u0131 kapanmas\u0131 yahut aksamas\u0131 \u00fcretilen sessionlar\u0131n silinmesini engelleyece\u011fi gibi bir yandan da uygulaman\u0131n belle\u011fini i\u015fgal etmeyecekleri i\u00e7in performans\u0131 d\u00fc\u015f\u00fcr\u00fcp maliyeti artt\u0131rmayacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class RedisController : Controller\r\n    {\r\n        public IActionResult RedisSessionSet()\r\n        {\r\n            HttpContext.Session.Set(&quot;name&quot;, Encoding.UTF8.GetBytes(&quot;Gen\u00e7ay Y\u0131ld\u0131z&quot;));\r\n            return View();\r\n        }\r\n        public IActionResult RedisSessionGet()\r\n        {\r\n            if (HttpContext.Session.TryGetValue(&quot;name&quot;, out byte&#x5B;] value))\r\n                Console.WriteLine(Encoding.UTF8.GetString(value));\r\n            return View();\r\n        }\r\n    }\r\n<\/pre>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-13-Asp.NET-Corede-Session-\u0130\u00e7in-Redis-Cache-Kullan\u0131m\u0131.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-13-Asp.NET-Corede-Session-\u0130\u00e7in-Redis-Cache-Kullan\u0131m\u0131.jpg\" alt=\"Redis Yaz\u0131 Serisi 13 - Asp.NET Core&#039;de Session \u0130\u00e7in Redis Cache Kullan\u0131m\u0131\" width=\"790\" height=\"239\" class=\"aligncenter size-full wp-image-15377\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-13-Asp.NET-Corede-Session-\u0130\u00e7in-Redis-Cache-Kullan\u0131m\u0131.jpg 790w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-13-Asp.NET-Corede-Session-\u0130\u00e7in-Redis-Cache-Kullan\u0131m\u0131-300x91.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/04\/Redis-Yaz\u0131-Serisi-13-Asp.NET-Corede-Session-\u0130\u00e7in-Redis-Cache-Kullan\u0131m\u0131-768x232.jpg 768w\" sizes=\"auto, (max-width: 790px) 100vw, 790px\" \/><\/a><\/p>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere session bilgileri hedef Redis sunucusunda ba\u015far\u0131yla tutulmaktad\u0131r.<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bir web uygulamas\u0131n\u0131n yay\u0131nland\u0131\u011f\u0131 host \u00fczerinde olu\u015fturulan sessionlar\u0131n uygulama yeniden ba\u015flat\u0131ld\u0131\u011f\u0131 durumlarda kaybolmas\u0131 ka\u00e7\u0131n\u0131lmazd\u0131r. Bu durum belle\u011fin temizlenmesi a\u00e7\u0131s\u0131ndan iyiye alamet olarak yorumlanabilsede esas\u0131nda session&#8217;daki verilerin kayb\u0131 s\u00f6z konusu olaca\u011f\u0131ndan dolay\u0131 pekte istenilen&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":15045,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3383],"tags":[3449,3451,3452,3453,3450],"class_list":["post-15368","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-redis","tag-adddistributedrediscache","tag-asp-net-core-session","tag-asp-net-core-session-distributed-cache","tag-session-distributed-cache","tag-session-redis"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15368","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=15368"}],"version-history":[{"count":9,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15368\/revisions"}],"predecessor-version":[{"id":15378,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/15368\/revisions\/15378"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/15045"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=15368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=15368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=15368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}