{"id":1482,"date":"2023-05-12T11:27:38","date_gmt":"2023-05-12T11:27:38","guid":{"rendered":"https:\/\/www.delimuhendis.org\/?p=1482"},"modified":"2023-05-12T11:27:39","modified_gmt":"2023-05-12T11:27:39","slug":"net-core-ve-web-api-redis","status":"publish","type":"post","link":"https:\/\/www.delimuhendis.org\/?p=1482","title":{"rendered":"Net Core ve Web API: Redis"},"content":{"rendered":"\n<p>Merhabalar, <\/p>\n\n\n\n<p>Bug\u00fcn sizinle g\u00fcn\u00fcm\u00fcz yaz\u0131l\u0131m sekt\u00f6r\u00fcn\u00fcn olmazsa olmazlar\u0131ndan biri olan Redis&#8217;e giri\u015f yapaca\u011f\u0131z. Redis nedir, ne sa\u011flar ve .net core&#8217;da nas\u0131l  kullan\u0131l\u0131r sorular\u0131n\u0131n cevab\u0131n\u0131 verece\u011fiz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Redis Nedir ve Ne Sa\u011flar?<\/h2>\n\n\n\n<p>Redis, in-memory da\u011f\u0131t\u0131k bir veritaban\u0131d\u0131r. Saniye ba\u015f\u0131na istek miktar\u0131 y\u00fcksek sistemlerde veritaban\u0131 sorgular\u0131n\u0131 yapmak yerine, ram \u00fczerinde cachlenmi\u015f response&#8217;u h\u0131zl\u0131 bir \u015fekilde istemciye d\u00f6nd\u00fcrmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Nas\u0131l Kullan\u0131l\u0131r?<\/h2>\n\n\n\n<p>.Net Core \u00fczerinde Redis&#8217;i kullanmak i\u00e7in \u00f6ncelikle Redis&#8217;i kullanaca\u011f\u0131n\u0131z makina&#8217;ya y\u00fcklemeniz gerekmektedir. <a href=\"https:\/\/redis.com\" data-type=\"URL\" data-id=\"https:\/\/redis.com\">Buradan<\/a> Redis&#8217;i makinan\u0131z\u0131(PC, Server etc.) kurabilirsiniz. Gelelim Net Core \u00fczerinde Redis&#8217;i kullanmaya. <\/p>\n\n\n\n<p>\u00d6ncelikle a\u015fa\u011f\u0131daki paketi Nuget Manager yada paket konsolunu kullanarak y\u00fckl\u00fcyoruz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Microsoft.Extensions.Caching.StackExchangeRedis<\/code><\/pre>\n\n\n\n<p>Paketi y\u00fckledi\u011fimizde konfig\u00fcrasyon i\u015flemini yapmak \u00fczere Program.cs s\u0131n\u0131f\u0131n\u0131 a\u00e7\u0131yoruz ve a\u015fa\u011f\u0131daki kodu ekliyoruz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>builder.Services.AddStackExchangeRedisCache(action =&gt;\n{\n    action.Configuration = \"localhost:6379\";\n});<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code> var builder = WebApplication.CreateBuilder(args);\n\n builder.Services.AddControllersWithViews();\n \/\/ Redis Configuration\n builder.Services.AddStackExchangeRedisCache(action =&gt;\n {\n            action.Configuration = \"localhost:6379\";\n });\n\n var app = builder.Build();\n\n if (!app.Environment.IsDevelopment())\n {\n      app.UseExceptionHandler(\"\/Home\/Error\");\n      app.UseHsts();\n }\n\n app.UseHttpsRedirection();\n app.UseStaticFiles();\n\n app.UseRouting();\n\n app.UseAuthorization();\n\n app.MapControllerRoute(\n    name: \"default\",\n    pattern: \"{controller=Home}\/{action=Index}\/{id?}\");\n\n app.Run();<\/code><\/pre>\n\n\n\n<p>Evet projemize Redis&#8217;i tamamiyle entegre ettik. \u015eimdi nas\u0131l kullanaca\u011f\u0131m\u0131z\u0131 g\u00f6relim. \u00d6ncelikle Redis Instance&#8217;\u0131n\u0131 Dependency Injection kullanarak elde edelim.  Biz HomeController i\u00e7erisinde kullanaca\u011f\u0131m\u0131z i\u00e7in a\u015fa\u011f\u0131daki gibi bir kod kulland\u0131k. Siz de kullanabilir yada kullanaca\u011f\u0131n\u0131z b\u00f6l\u00fcmde instance&#8217;\u0131n\u0131 alabilirsiniz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>private readonly IDistributedCache _distributedCache;\n\npublic HomeController(IDistributedCache distributedCache)\n{\n   _distributedCache = distributedCache;\n}<\/code><\/pre>\n\n\n\n<p>Evet, Instance&#8217;\u0131m\u0131z\u0131 ald\u0131k. A\u015fa\u011f\u0131daki gibi veri kayd\u0131 yapabiliriz. Burada depolad\u0131\u011f\u0131m\u0131z veri e\u011fer 1 saat boyunca hi\u00e7 sorgulanmazsa kald\u0131r\u0131l\u0131r. 7 g\u00fcn sonunda her durumda kald\u0131r\u0131lacakt\u0131r. Bu parametreleri siz kendi tercihlerinize g\u00f6re setleyebilirsiniz.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var dataToStore = \"Sample Data to Store\";\nvar data = Encoding.UTF8.GetBytes(dataToStore);\nvar key = \"Data\";\nvar options = new DistributedCacheEntryOptions()\n                    .SetSlidingExpiration(TimeSpan.FromHours(1)) \/\/ 1 saat eri\u015filmediyse expire et\n                    .SetAbsoluteExpiration(DateTime.Now.AddDays(7)); \/\/ 7 g\u00fcn sonunda expire et.\nawait _distributedCache.SetAsync(key, data, options);<\/code><\/pre>\n\n\n\n<p>Kaydetti\u011fimiz data&#8217;ya ise a\u015fa\u011f\u0131daki gibi eri\u015febiliriz. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var storedData = await _distributedCache.GetAsync(key);\nvar parsedStoredData = Encoding.UTF8.GetString(storedData);<\/code><\/pre>\n\n\n\n<p>Evet, bug\u00fcnl\u00fck bu kadar. Bir sonraki konumuzda g\u00f6r\u00fc\u015fmek \u00fczere.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Merhabalar, Bug\u00fcn sizinle g\u00fcn\u00fcm\u00fcz yaz\u0131l\u0131m sekt\u00f6r\u00fcn\u00fcn olmazsa olmazlar\u0131ndan biri olan Redis&#8217;e giri\u015f yapaca\u011f\u0131z. Redis nedir, ne sa\u011flar ve .net core&#8217;da&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1368,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[46,414,659,608],"class_list":["post-1482","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programlama","tag-api","tag-net-core","tag-redis","tag-web"],"_links":{"self":[{"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=\/wp\/v2\/posts\/1482","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1482"}],"version-history":[{"count":5,"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=\/wp\/v2\/posts\/1482\/revisions"}],"predecessor-version":[{"id":1487,"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=\/wp\/v2\/posts\/1482\/revisions\/1487"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=\/wp\/v2\/media\/1368"}],"wp:attachment":[{"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1482"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1482"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.delimuhendis.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1482"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}