{"id":9093,"date":"2024-02-29T14:35:07","date_gmt":"2024-02-29T05:35:07","guid":{"rendered":"https:\/\/www.auctionpro.co.kr\/?p=9093"},"modified":"2025-05-14T09:43:57","modified_gmt":"2025-05-14T00:43:57","slug":"netcore6-0-memory-cache-mssql-db","status":"publish","type":"post","link":"https:\/\/www.auctionpro.co.kr\/?p=9093","title":{"rendered":"NetCore6.0 Memory Cache (MSSQL DB)"},"content":{"rendered":"\n<p>Overview : MSSQL DB \ub370\uc774\ud0c0 \uce90\uc2f1 \ud558\uae30<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. MySQL<\/h3>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-auctionpro wp-block-embed-auctionpro\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"Z0vC6eSDHE\"><a href=\"https:\/\/www.auctionpro.co.kr\/?p=9073\">NetCore6.0 Memory Cache (MySQL DB)<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;NetCore6.0 Memory Cache (MySQL DB)&#8221; &#8212; AuctionPro\" src=\"https:\/\/www.auctionpro.co.kr\/?p=9073&#038;embed=true#?secret=sSw2LBToLw#?secret=Z0vC6eSDHE\" data-secret=\"Z0vC6eSDHE\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2. MSSQL Data<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-13.png\"><img loading=\"lazy\" decoding=\"async\" width=\"867\" height=\"886\" src=\"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-13.png\" alt=\"\" class=\"wp-image-9094\" srcset=\"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-13.png 867w, https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-13-294x300.png 294w, https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-13-768x785.png 768w\" sizes=\"auto, (max-width: 867px) 100vw, 867px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">UML<\/h3>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f366d0efd93&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f366d0efd93\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"673\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/03\/image-2-1024x673.png\" alt=\"\" class=\"wp-image-9126\" srcset=\"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/03\/image-2-1024x673.png 1024w, https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/03\/image-2-300x197.png 300w, https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/03\/image-2-768x505.png 768w, https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/03\/image-2.png 1312w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"\ud655\ub300\ud558\uae30\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\uc194\ub8e8\uc158 \ud30c\uc77c\ub4e4<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Microsoft.EntityFrameworkCore.SqlSever  \uc0ac\uc6a9 \/ \uc5c6\uc73c\uba74 \ud328\ud0a4\uc9c0 \ucd94\uac00<\/li>\n\n\n\n<li>MySql  \uce90\uc2f1\uc5d0\uc11c  Data-&gt;  AirlineDBContext.cs \ubd80\ubd84\ub9cc \ub2e4\ub984<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/03\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"407\" height=\"567\" src=\"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/03\/image-1.png\" alt=\"\" class=\"wp-image-9117\" srcset=\"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/03\/image-1.png 407w, https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/03\/image-1-215x300.png 215w\" sizes=\"auto, (max-width: 407px) 100vw, 407px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">AirlineController<\/h3>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:c# decode:true \" title=\"AirlineController \">using Microsoft.AspNetCore.Mvc;\nusing InMemoryCacheCore.Models;\nusing InMemoryCacheCore.Services;\nusing InMemoryCacheCore.Data;\n\nnamespace InMemoryCacheCore.Controllers\n{\n    [ApiController]\n    [Route(\"[controller]\")]\n    public class AirlineController : ControllerBase\n    {\n        private readonly ICodeService _codeService;\n        private readonly ICacheService _cacheService;\n\n        private readonly ILogger&lt;AirlineController&gt; _logger;\n\n        public AirlineController(ICodeService codeService, ICacheService cacheService, ILogger&lt;AirlineController&gt; logger)\n        {\n            _codeService = codeService ?? throw new ArgumentNullException(nameof(codeService));\n            _cacheService = cacheService ?? throw new ArgumentNullException(nameof(cacheService));\n            _logger = logger;\n        }\n\n        [HttpGet(Name = \"AirlineCode\")]\n        public async Task&lt;IEnumerable&lt;Code&gt;&gt; Get()\n        {\n            try\n            {\n                IEnumerable&lt;Code&gt; codes = _cacheService.GetCachedCode(\"_Codes\");\n\n                if (codes == null || !codes.Any())\n                {\n                    \/\/AirlineMySQLDBContext _context = new AirlineMySQLDBContext();\n\n                    codes = await _codeService.GetCodeAsync();\n                }\n\n                return codes ?? new List&lt;Code&gt;();\n\n                \/\/codes = codes.Where(s =&gt; s.Airlinecode.Equals(\"KE\", StringComparison.Ordinal)) ?? new List&lt;Code&gt;();\n                \/\/return codes;\n\n            }\n            catch (Exception ex)\n            {\n                _logger.LogError(ex, \"\uc815\ubcf4\ub97c \uac00\uc838\uc624\ub294 \ub3d9\uc548 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4.\");\n                throw;\n            }\n\n        }\n\n    }\n}\n<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">AirlineDBContext<\/h3>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:vim decode:true \" title=\"AirlineDBContext \">using Microsoft.EntityFrameworkCore;\nusing InMemoryCacheCore.Models;\n\nnamespace InMemoryCacheCore.Data\n{\n    public class AirlineDBContext : DbContext\n    {\n        static readonly string connectionString = \"Server=SQLOLEDB.1;Password=XXXXXXX;Persist Security Info=True;User ID=UserXXX;Initial Catalog=BasicCode;Data Source=XXX.XXX.XXX.XXX\";\n\n        public DbSet&lt;Code&gt;? AIRLINE { get; set; }\n\n        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n        {\n            optionsBuilder.UseSqlServer(connectionString);\n        }\n    }\n}\n<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">AirlineHttpClient<\/h3>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:vim decode:true \" title=\"AirlineHttpClient \">using Microsoft.EntityFrameworkCore;\nusing InMemoryCacheCore.Models;\nusing InMemoryCacheCore.Data;\n\nnamespace InMemoryCacheCore.Infrastructure\n{\n    public interface IHttpClient\n    {\n        Task&lt;IEnumerable&lt;Code&gt;&gt; Get();\n    }\n\n    public class AirlineHttpClient : IHttpClient\n    {\n        public async Task&lt;IEnumerable&lt;Code&gt;&gt; Get() {\n\n            AirlineDBContext _context = new AirlineDBContext();\n\n            if (_context.AIRLINE != null)\n            {\n                var codesResponse = await _context.AIRLINE.ToListAsync();\n\n                return codesResponse;\n            }\n            else\n            {\n                \/\/throw new Exception(\"\");\n                return Array.Empty&lt;Code&gt;();\n            }\n\n            \/\/return new Code[0];\n        }\n    }    \n}\n<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">CacheProvider<\/h3>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:c# decode:true \" title=\"CacheProvider\">using Microsoft.Extensions.Caching.Memory;\n\nnamespace InMemoryCacheCore.Infrastructure\n{\n    public interface ICacheProvider\n    {\n        T? GetFromCache&lt;T&gt;(string key) where T : class;\n        void SetCache&lt;T&gt;(string key, T value, MemoryCacheEntryOptions options) where T : class;\n        void ClearCache(string key);\n    }\n\n    public class CacheProvider : ICacheProvider\n    {\n        private readonly IMemoryCache _cache;\n\n        public CacheProvider(IMemoryCache cache)\n        {\n            _cache = cache;\n        }\n\n        public T? GetFromCache&lt;T&gt;(string key) where T : class\n        {\n            \/\/_cache.TryGetValue(key, out T cachedResponse);\n            \/\/return cachedResponse as T;\n            return _cache.Get&lt;T&gt;(key);\n        }\n\n        public void SetCache&lt;T&gt;(string key, T value, MemoryCacheEntryOptions options) where T : class\n        {\n            _cache.Set(key, value, options);\n        }\n\n        public void ClearCache(string key)\n        {\n            _cache.Remove(key);\n        }\n    }\n}\n\n<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Models -&gt; Airline<\/h2>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:c# decode:true \" title=\"Airline\">using System.ComponentModel.DataAnnotations;\nusing System.Xml.Linq;\nusing System.Xml.Serialization;\n\nnamespace InMemoryCacheCore.Models\n{\n    public class Code\n    {\n        [Key]\n        [Display(Name = \"Airlinecode\")]\n        public string? Airlinecode { get; set; }\n        \n        [Display(Name = \"Airline3code\")]\n        public string? Airline3code { get; set; } \/\/Can't convert VarChar to Int32\n\n        [Display(Name = \"Airlinekor\")]\n        public string? Airlinekor { get; set; }\n\n        [Display(Name = \"Airlineeng\")]\n        public string? Airlineeng { get; set; }\n    }\n}\n<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">CachedCodeService<\/h3>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:c# decode:true \" title=\"CachedCodeService\">using InMemoryCacheCore.Data;\nusing InMemoryCacheCore.Infrastructure;\nusing InMemoryCacheCore.Models;\nusing Microsoft.Extensions.Caching.Memory;\n\nnamespace InMemoryCacheCore.Services\n{\n    public class CachedCodeService : ICodeService\n    {\n        private readonly CodeService _codeService;\n        private readonly ICacheProvider _cacheProvider;\n        \n        private const int CacheTTLInSeconds = 100;\n        private readonly MemoryCacheEntryOptions cacheEntryOptions = new MemoryCacheEntryOptions()\n                    .SetSlidingExpiration(TimeSpan.FromSeconds(CacheTTLInSeconds));\n\n        private static readonly SemaphoreSlim GetUsersSemaphore = new(1, 1);\n\n        public CachedCodeService(CodeService codeService, ICacheProvider cacheProvider)\n        {\n            _codeService = codeService;\n            _cacheProvider = cacheProvider;\n        }\n\n        public async Task&lt;IEnumerable&lt;Code&gt;&gt; GetCodeAsync()\n        {\n            return await GetCachedResponse(\"_Codes\", GetUsersSemaphore, () =&gt; _codeService.GetCodeAsync());\n        }\n\n        private async Task&lt;IEnumerable&lt;Code&gt;&gt; GetCachedResponse(string cacheKey, SemaphoreSlim semaphore, Func&lt;Task&lt;IEnumerable&lt;Code&gt;&gt;&gt; func)\n        {\n            var users = _cacheProvider?.GetFromCache&lt;IEnumerable&lt;Code&gt;&gt;(cacheKey);\n            if (users != null) return users;\n\n            try\n            {\n                await semaphore.WaitAsync();\n\n                users = _cacheProvider?.GetFromCache&lt;IEnumerable&lt;Code&gt;&gt;(cacheKey); \/\/ Recheck to make sure it didn't populate before entering semaphore\n                if (users != null) return users;\n\n                users = await func();\n\n                _cacheProvider?.SetCache(cacheKey, users, cacheEntryOptions);\n            }\n            finally\n            {\n                semaphore.Release();\n            }\n\n            return users;\n        }\n\n        \n    }\n}\n<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">CacheService<\/h3>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:c# decode:true \" title=\"CacheService\">using InMemoryCacheCore.Infrastructure;\nusing InMemoryCacheCore.Models;\n\nnamespace InMemoryCacheCore.Services\n{\n    public interface ICacheService\n    {\n        IEnumerable&lt;Code&gt; GetCachedCode(string cacheKey);\n    }\n\n    public class CacheService : ICacheService\n    {\n        private readonly ICacheProvider _cacheProvider;\n\n        public CacheService(ICacheProvider cacheProvider) { \n            _cacheProvider = cacheProvider;\n        }\n        \n        public IEnumerable&lt;Code&gt; GetCachedCode(string cacheKey)\n        {\n            return _cacheProvider.GetFromCache&lt;IEnumerable&lt;Code&gt;&gt;(cacheKey) ?? Enumerable.Empty&lt;Code&gt;();\n        }\n\n        public void ClearCache(string cachekey) {\n            _cacheProvider.ClearCache(cachekey);\n        }\n\n    }\n}\n<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">CodeService<\/h3>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:c# decode:true \" title=\"CodeService\">using InMemoryCacheCore.Data;\nusing InMemoryCacheCore.Infrastructure;\nusing InMemoryCacheCore.Models;\n\nnamespace InMemoryCacheCore.Services\n{\n    public interface ICodeService\n    {\n        Task&lt;IEnumerable&lt;Code&gt;&gt; GetCodeAsync();  \n    }\n\n    public class CodeService : ICodeService\n    {\n        private readonly IHttpClient _airlineMySQLClient;\n\n        public CodeService(IHttpClient AirlineMySQLClient)\n        {\n            _airlineMySQLClient = AirlineMySQLClient;\n        }\n\n        public Task&lt;IEnumerable&lt;Code&gt;&gt; GetCodeAsync()\n        {\n            return _airlineMySQLClient.Get();\n        }\n    }\n}\n<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Program.cs<\/h3>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:vim decode:true \" title=\"Program.cs\">using InMemoryCacheCore.Data;\nusing InMemoryCacheCore.Infrastructure;\nusing InMemoryCacheCore.Models;\nusing InMemoryCacheCore.Services;\nusing Microsoft.EntityFrameworkCore;\n\nvar builder = WebApplication.CreateBuilder(args);\n\n\/\/ Add services to the container.\n\nbuilder.Services.AddControllers();\n\/\/ Learn more about configuring Swagger\/OpenAPI at https:\/\/aka.ms\/aspnetcore\/swashbuckle\nbuilder.Services.AddEndpointsApiExplorer();\nbuilder.Services.AddSwaggerGen();\n\n\/\/\nbuilder.Services.AddHttpClient();\n\nbuilder.Services.AddSingleton&lt;CodeService&gt;(); \/\/MainService\nbuilder.Services.AddSingleton&lt;ICodeService, CachedCodeService&gt;(); \/\/User \uc5f0\uacb0 \uc11c\ube44\uc2a4 \n\nbuilder.Services.AddSingleton&lt;ICacheService, CacheService&gt;();   \/\/\uce90\uc2f1 \uc11c\ube44\uc2a4  \nbuilder.Services.AddSingleton&lt;ICacheProvider, CacheProvider&gt;(); \/\/infrastructure\nbuilder.Services.AddSingleton&lt;IHttpClient, AirlineHttpClient&gt;();     \/\/infrastructure\nbuilder.Services.AddMemoryCache();\n\nvar app = builder.Build();\n\n\/\/ Configure the HTTP request pipeline.\nif (app.Environment.IsDevelopment())\n{\n    app.UseSwagger();\n    app.UseSwaggerUI();\n}\n\n\/\/if (!app.Environment.IsDevelopment())\n\/\/{\n    app.UseHttpsRedirection();\n\/\/}\n\napp.UseAuthorization();\n\napp.MapControllers();\n\napp.Run();<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Reponse<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-9.png\"><img loading=\"lazy\" decoding=\"async\" width=\"834\" height=\"842\" src=\"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-9.png\" alt=\"\" class=\"wp-image-9080\" srcset=\"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-9.png 834w, https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-9-297x300.png 297w, https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-9-150x150.png 150w, https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-9-768x775.png 768w\" sizes=\"auto, (max-width: 834px) 100vw, 834px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Overview : MSSQL DB \ub370\uc774\ud0c0 \uce90\uc2f1 \ud558\uae30 1. MySQL 2. MSSQL Data UML \uc194\ub8e8\uc158 \ud30c\uc77c\ub4e4 AirlineController AirlineDBContext AirlineHttpClient CacheProvider Models -&gt; Airline CachedCodeService CacheService CodeService <a class=\"mh-excerpt-more\" href=\"https:\/\/www.auctionpro.co.kr\/?p=9093\" title=\"NetCore6.0 Memory Cache (MSSQL DB)\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[237],"tags":[],"class_list":["post-9093","post","type-post","status-publish","format-standard","hentry","category-memory-cache"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>NetCore6.0 Memory Cache (MSSQL DB) - AuctionPro<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.auctionpro.co.kr\/?p=9093\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NetCore6.0 Memory Cache (MSSQL DB) - AuctionPro\" \/>\n<meta property=\"og:description\" content=\"Overview : MSSQL DB \ub370\uc774\ud0c0 \uce90\uc2f1 \ud558\uae30 1. MySQL 2. MSSQL Data UML \uc194\ub8e8\uc158 \ud30c\uc77c\ub4e4 AirlineController AirlineDBContext AirlineHttpClient CacheProvider Models -&gt; Airline CachedCodeService CacheService CodeService [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.auctionpro.co.kr\/?p=9093\" \/>\n<meta property=\"og:site_name\" content=\"AuctionPro\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-29T05:35:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-14T00:43:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-13.png\" \/>\n\t<meta property=\"og:image:width\" content=\"867\" \/>\n\t<meta property=\"og:image:height\" content=\"886\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"golgol\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"golgol\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/?p=9093#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/?p=9093\"},\"author\":{\"name\":\"golgol\",\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/#\\\/schema\\\/person\\\/d3dbae599b06cd55f5b14a3e2116f7a2\"},\"headline\":\"NetCore6.0 Memory Cache (MSSQL DB)\",\"datePublished\":\"2024-02-29T05:35:07+00:00\",\"dateModified\":\"2025-05-14T00:43:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/?p=9093\"},\"wordCount\":40,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/?p=9093#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/image-13.png\",\"articleSection\":[\"Memory Cache\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.auctionpro.co.kr\\\/?p=9093#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/?p=9093\",\"url\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/?p=9093\",\"name\":\"NetCore6.0 Memory Cache (MSSQL DB) - AuctionPro\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/?p=9093#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/?p=9093#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/image-13.png\",\"datePublished\":\"2024-02-29T05:35:07+00:00\",\"dateModified\":\"2025-05-14T00:43:57+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/#\\\/schema\\\/person\\\/d3dbae599b06cd55f5b14a3e2116f7a2\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/?p=9093#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.auctionpro.co.kr\\\/?p=9093\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/?p=9093#primaryimage\",\"url\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/image-13.png\",\"contentUrl\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/image-13.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/?p=9093#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"NetCore6.0 Memory Cache (MSSQL DB)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/#website\",\"url\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/\",\"name\":\"AuctionPro\",\"description\":\"\uc625\uc158\ud504\ub85c\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/#\\\/schema\\\/person\\\/d3dbae599b06cd55f5b14a3e2116f7a2\",\"name\":\"golgol\",\"url\":\"https:\\\/\\\/www.auctionpro.co.kr\\\/?author=6\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"NetCore6.0 Memory Cache (MSSQL DB) - AuctionPro","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.auctionpro.co.kr\/?p=9093","og_locale":"ko_KR","og_type":"article","og_title":"NetCore6.0 Memory Cache (MSSQL DB) - AuctionPro","og_description":"Overview : MSSQL DB \ub370\uc774\ud0c0 \uce90\uc2f1 \ud558\uae30 1. MySQL 2. MSSQL Data UML \uc194\ub8e8\uc158 \ud30c\uc77c\ub4e4 AirlineController AirlineDBContext AirlineHttpClient CacheProvider Models -&gt; Airline CachedCodeService CacheService CodeService [...]","og_url":"https:\/\/www.auctionpro.co.kr\/?p=9093","og_site_name":"AuctionPro","article_published_time":"2024-02-29T05:35:07+00:00","article_modified_time":"2025-05-14T00:43:57+00:00","og_image":[{"width":867,"height":886,"url":"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-13.png","type":"image\/png"}],"author":"golgol","twitter_card":"summary_large_image","twitter_misc":{"\uae00\uc4f4\uc774":"golgol","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.auctionpro.co.kr\/?p=9093#article","isPartOf":{"@id":"https:\/\/www.auctionpro.co.kr\/?p=9093"},"author":{"name":"golgol","@id":"https:\/\/www.auctionpro.co.kr\/#\/schema\/person\/d3dbae599b06cd55f5b14a3e2116f7a2"},"headline":"NetCore6.0 Memory Cache (MSSQL DB)","datePublished":"2024-02-29T05:35:07+00:00","dateModified":"2025-05-14T00:43:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.auctionpro.co.kr\/?p=9093"},"wordCount":40,"commentCount":0,"image":{"@id":"https:\/\/www.auctionpro.co.kr\/?p=9093#primaryimage"},"thumbnailUrl":"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-13.png","articleSection":["Memory Cache"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.auctionpro.co.kr\/?p=9093#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.auctionpro.co.kr\/?p=9093","url":"https:\/\/www.auctionpro.co.kr\/?p=9093","name":"NetCore6.0 Memory Cache (MSSQL DB) - AuctionPro","isPartOf":{"@id":"https:\/\/www.auctionpro.co.kr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.auctionpro.co.kr\/?p=9093#primaryimage"},"image":{"@id":"https:\/\/www.auctionpro.co.kr\/?p=9093#primaryimage"},"thumbnailUrl":"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-13.png","datePublished":"2024-02-29T05:35:07+00:00","dateModified":"2025-05-14T00:43:57+00:00","author":{"@id":"https:\/\/www.auctionpro.co.kr\/#\/schema\/person\/d3dbae599b06cd55f5b14a3e2116f7a2"},"breadcrumb":{"@id":"https:\/\/www.auctionpro.co.kr\/?p=9093#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.auctionpro.co.kr\/?p=9093"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.auctionpro.co.kr\/?p=9093#primaryimage","url":"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-13.png","contentUrl":"https:\/\/www.auctionpro.co.kr\/wp-content\/uploads\/2024\/02\/image-13.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.auctionpro.co.kr\/?p=9093#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/www.auctionpro.co.kr\/"},{"@type":"ListItem","position":2,"name":"NetCore6.0 Memory Cache (MSSQL DB)"}]},{"@type":"WebSite","@id":"https:\/\/www.auctionpro.co.kr\/#website","url":"https:\/\/www.auctionpro.co.kr\/","name":"AuctionPro","description":"\uc625\uc158\ud504\ub85c","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.auctionpro.co.kr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Person","@id":"https:\/\/www.auctionpro.co.kr\/#\/schema\/person\/d3dbae599b06cd55f5b14a3e2116f7a2","name":"golgol","url":"https:\/\/www.auctionpro.co.kr\/?author=6"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.auctionpro.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/9093","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.auctionpro.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.auctionpro.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.auctionpro.co.kr\/index.php?rest_route=\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.auctionpro.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9093"}],"version-history":[{"count":0,"href":"https:\/\/www.auctionpro.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/9093\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.auctionpro.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9093"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.auctionpro.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9093"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.auctionpro.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9093"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}