{"id":3988,"date":"2017-09-06T12:46:33","date_gmt":"2017-09-06T19:46:33","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=3988"},"modified":"2025-06-13T19:40:27","modified_gmt":"2025-06-14T02:40:27","slug":"distributed-caching-aspnet-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/distributed-caching-aspnet-couchbase\/","title":{"rendered":"Armazenamento em cache distribu\u00eddo com ASP.NET Core e Couchbase"},"content":{"rendered":"<div class=\"paragraph\">\n<p>O armazenamento em cache distribu\u00eddo pode ajudar a melhorar o desempenho de um aplicativo ASP.NET Core. Isso \u00e9 especialmente verdadeiro para um aplicativo ASP.NET que \u00e9 implantado em um farm de servidores ou em um ambiente de nuvem escal\u00e1vel. Usar o Couchbase Server para armazenamento em cache \u00e9 um dos muitos recursos que o tornam a escolha ideal para seu aplicativo ASP.NET Core. <a href=\"https:\/\/info.couchbase.com\/engagement_database_white_paper.html\">necessidades do banco de dados de engajamento<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Nesta postagem do blog, mostrarei a voc\u00ea como usar o <a href=\"https:\/\/www.nuget.org\/packages\/Couchbase.Extensions.Caching\">Plug-in do middleware Couchbase.Extensions.Caching<\/a> para adicionar facilmente recursos de cache distribu\u00eddo ao seu aplicativo.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Voc\u00ea pode acompanhar o <a href=\"https:\/\/github.com\/couchbaselabs\/blog-source-code\/tree\/master\/Groves\/077AspNetCoreCaching\/CouchbaseAspNetCaching\">c\u00f3digo de amostra que escrevi para esta postagem no GitHub<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><em>Observe que o Couchbase.Extensions.Caching est\u00e1 atualmente em uma vers\u00e3o beta2 (no momento em que escrevo esta postagem do blog), portanto, algumas coisas podem mudar.<\/em><\/p>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_basic_setup_of_couchbase\">Configura\u00e7\u00e3o b\u00e1sica do Couchbase<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Primeiro, voc\u00ea precisar\u00e1 de um cluster do Couchbase Server em execu\u00e7\u00e3o (voc\u00ea pode instal\u00e1-lo <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/5.0\/install\/install-intro.html\">no local<\/a>ou <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/getting-started\/do-a-quick-install.html\">com o Docker<\/a>ou mesmo <a href=\"https:\/\/azuremarketplace.microsoft.com\/en-us\/marketplace\/apps\/couchbase.couchbase-enterprise\">no Azure<\/a> se voc\u00ea quiser).<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Em seguida, voc\u00ea precisar\u00e1 <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/clustersetup\/create-bucket.html\">criar um balde<\/a> no Couchbase onde os dados armazenados em cache ser\u00e3o armazenados. Chamei o meu de \"cachebucket\". Talvez voc\u00ea queira aproveitar as vantagens do novo <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/5.0\/architecture\/core-data-access-buckets.html#concept_qqk_4r2_xs\">recurso de balde ef\u00eamero<\/a> no Couchbase Server 5.0 para armazenamento em cache, mas n\u00e3o \u00e9 necess\u00e1rio.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Se voc\u00ea estiver usando o Couchbase Server 5.0, tamb\u00e9m precisar\u00e1 criar um usu\u00e1rio com permiss\u00f5es (Data Writer e Data Reader) nesse bucket. Para manter as coisas simples, crie um usu\u00e1rio com o mesmo nome do bucket (por exemplo, \"cachebucket\").<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_distributed_caching_with_couchbase_extensions\">Cache distribu\u00eddo com o Couchbase.Extensions<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>O <a href=\"https:\/\/github.com\/couchbaselabs\/Couchbase.Extensions\">Couchbase.Extensions (GitHub)<\/a> tem como objetivo tornar mais simples o trabalho com o Couchbase Server e o .NET Core. O armazenamento em cache \u00e9 apenas uma dessas extens\u00f5es.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Voc\u00ea pode adicion\u00e1-lo ao seu projeto ASP.NET Core com o NuGet, por meio do Package Manager: <code>Instalar o pacote Couchbase.Extensions.Caching -Vers\u00e3o 1.0.0-beta2<\/code>ou com a interface do usu\u00e1rio do NuGet, ou voc\u00ea pode usar a linha de comando do .NET: <code>dotnet add pacote Couchbase.Extensions.Caching --vers\u00e3o 1.0.0-beta2<\/code>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/09\/07701-nuget-couchbase-distributed-caching-extension.png\" alt=\"Couchbase extension for distributed caching available on NuGet\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Depois de adicionar isso ao seu projeto, voc\u00ea precisar\u00e1 fazer algumas pequenas altera\u00e7\u00f5es em seu <code>Inicializa\u00e7\u00e3o<\/code> classe em <code>Startup.cs<\/code>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Primeiro, em <code>ConfigureServices<\/code>Adicione alguns namespaces:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">usando Couchbase.Extensions.Caching;\r\nusing Couchbase.Extensions.DependencyInjection;<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Isso tornar\u00e1 o namespace Caching dispon\u00edvel e, especificamente, o namespace <code>AddDistributedCouchbaseCache<\/code> m\u00e9todo de extens\u00e3o para <code>IServiceCollection<\/code>. Em seguida, chame esse m\u00e9todo de extens\u00e3o de dentro do <code>ConfigureServices<\/code> m\u00e9todo.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>O outro espa\u00e7o de nome l\u00e1 dentro, <code>Inje\u00e7\u00e3o de depend\u00eancia<\/code>\u00e9 necess\u00e1rio para injetar a funcionalidade do Couchbase. Nesse caso, ela ser\u00e1 usada somente pela extens\u00e3o Caching. Mas voc\u00ea tamb\u00e9m pode us\u00e1-la para outras finalidades, que abordarei em uma postagem futura no blog.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Mas, por enquanto, ele s\u00f3 \u00e9 necess\u00e1rio para o <code>AddCouchbase<\/code> m\u00e9todo de extens\u00e3o em <code>IServiceCollection<\/code>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Por fim, junte os dois, e seu <code>ConfigureServices<\/code> deve ter a seguinte apar\u00eancia:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">public void ConfigureServices(IServiceCollection services)\r\n{\r\n    services.AddMvc();\r\n\r\n    services.AddCouchbase(opt =&gt;\r\n    {\r\n        opt.Servers = new List\r\n        {\r\n            new Uri(\"https:\/\/localhost:8091\")\r\n        };\r\n    });\r\n\r\n    services.AddDistributedCouchbaseCache(\"cachebucket\", \"password\", opt =&gt; { });\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_using_distributed_caching\">Uso de cache distribu\u00eddo<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Agora que voc\u00ea tem uma configura\u00e7\u00e3o de cache distribu\u00eddo com o Couchbase em seu projeto ASP.NET Core, pode usar <code>IDistributedCache<\/code> em outra parte do seu projeto.<\/p>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_injecting_idistributedcache\">Inje\u00e7\u00e3o de IDistributedCache<\/h3>\n<div class=\"paragraph\">\n<p>Um exemplo simples seria us\u00e1-lo diretamente em um controlador. Ele pode ser injetado em construtores conforme sua necessidade:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">classe p\u00fablica HomeController : Controlador\r\n{\r\n    private readonly IDistributedCache _cache;\r\n\r\n    public HomeController(IDistributedCache cache)\r\n    {\r\n        _cache = cache;\r\n    }\r\n\r\n    \/\/ ... snip ...\r\n\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_caching_strings\">Cache de strings<\/h3>\n<div class=\"paragraph\">\n<p>Voc\u00ea pode usar o <code>GetString<\/code> e <code>SetString<\/code> para recuperar\/definir um valor de string no cache.<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">\/\/ cache\/recuperar do cache\r\n\/\/ uma string, armazenada sob a chave \"CachedString1\"\r\nvar message = _cache.GetString(\"CachedString1\");\r\nif (message == null)\r\n{\r\n    message = DateTime.Now + \" \" + Path.GetRandomFileName();\r\n    _cache.SetString(\"CachedString1\", message);\r\n}\r\nViewData[\"Message\"] = \"'CachedString1' is '\" + message + \"'\";<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Isso apareceria no bucket \"cachebucket\" como um valor bin\u00e1rio codificado (n\u00e3o JSON).<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/09\/07702-binary-value-cached.png\" alt=\"String cached in Couchbase\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>No c\u00f3digo de exemplo, eu simplesmente imprimo o <code>ViewData[\"Message\"]<\/code> na visualiza\u00e7\u00e3o do Razor. A apar\u00eancia deve ser semelhante a esta:<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/09\/07703-cached-string-output.png\" alt=\"Cached string output to Razor\" \/><\/span><\/p>\n<\/div>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_caching_objects\">Objetos em cache<\/h3>\n<div class=\"paragraph\">\n<p>Voc\u00ea tamb\u00e9m pode usar <code>Set<\/code> e <code>Obter<\/code> para salvar e recuperar objetos no cache. Criei um POCO (Plain Old CLR Object) muito simples para demonstrar:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">public class MyPoco\r\n{\r\n    public string Name { get; set; }\r\n    public int ShoeSize { get; set; }\r\n    public decimal Price { get; set; }\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Em seguida, na amostra, eu gero uma string aleat\u00f3ria para usar como uma chave de cache e uma inst\u00e2ncia gerada aleatoriamente de <code>MyPoco<\/code>. Primeiro, eu os armazeno no cache usando o <code>Set<\/code> m\u00e9todo:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">var pocoKey = Path.GetRandomFileName();\r\n_cache.Set(pocoKey, MyPoco.Generate(), null);\r\nViewData[\"Message2\"] = \"Colocou em cache um POCO em '\" + pocoKey + \"'\";<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Em seguida, imprimo a chave para a visualiza\u00e7\u00e3o do Razor:<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/09\/07704-cached-poco.png\" alt=\"Cached POCO output to Razor\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Em seguida, posso usar essa chave para procurar o valor no Couchbase:<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/09\/07705-cached-poco-couchbase-json.png\" alt=\"Cached POCO in Couchbase\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Al\u00e9m disso, observe que ele foi serializado para JSON. Isso n\u00e3o significa apenas que voc\u00ea pode l\u00ea-lo, mas tamb\u00e9m pode consult\u00e1-lo com o N1QL (se necess\u00e1rio).<\/p>\n<\/div>\n<\/div>\n<div class=\"sect2\">\n<h3 id=\"_distributed_caching_with_expiration\">Cache distribu\u00eddo com expira\u00e7\u00e3o<\/h3>\n<div class=\"paragraph\">\n<p>Se quiser que os valores no cache expirem ap\u00f3s um determinado per\u00edodo de tempo, voc\u00ea pode especificar isso com <code>DistributedCacheEntryOptions<\/code> (somente <code>SlidingExpiration<\/code> \u00e9 suportado no momento).<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">var anotherPocoKey = Path.GetRandomFileName();\r\n_cache.Set(anotherPocoKey, MyPoco.Generate(), new DistributedCacheEntryOptions\r\n{\r\n    SlidingExpiration = new TimeSpan(0, 0, 10) \/\/ 10 segundos\r\n});\r\nViewData[\"Message3\"] = \"Colocou em cache um POCO em '\" + anotherPocoKey + \"'\";<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>No projeto de amostra, tamb\u00e9m configurei isso para ser impresso no Razor.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/09\/07706-cached-value-expiration.png\" alt=\"Cached POCO with expiration\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Se voc\u00ea visualizar esse documento (antes que os 10 segundos se esgotem) no Console do Couchbase, ver\u00e1 que ele tem um <code>expira\u00e7\u00e3o<\/code> em seus metadados. Veja um exemplo:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-javascript\">{\r\n  \"id\": \"xjkmswko.v35\",\r\n  \"rev\": \"1-14e1d9998125000059b0404502000001\",\r\n  \"expiration\" (expira\u00e7\u00e3o): 1504723013,\r\n  \"flags\" (bandeiras): 33554433\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Ap\u00f3s 10 segundos, esse documento desaparecer\u00e1 do compartimento e voc\u00ea ver\u00e1 um erro \"not found (Document does not exist)\" (n\u00e3o encontrado (o documento n\u00e3o existe)).<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_tearing_down_distributed_caching\">Elimina\u00e7\u00e3o do cache distribu\u00eddo<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Por fim, n\u00e3o se esque\u00e7a de limpar os recursos usados pelo Couchbase .NET SDK para o armazenamento em cache distribu\u00eddo. Uma maneira f\u00e1cil de fazer isso \u00e9 com o comando <code>ApplicationStopped<\/code> evento. Voc\u00ea pode conectar isso em <code>Inicializa\u00e7\u00e3o<\/code>:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">appLifetime.ApplicationStopped.Register(() =&gt;\r\n{\r\n    app.ApplicationServices.GetRequiredService().Close();\r\n});<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p><em>Observe que voc\u00ea ter\u00e1 que adicionar <code>IApplicationLifetime appLifetime<\/code> como um par\u00e2metro para o <code>Configurar<\/code> m\u00e9todo em <code>Inicializa\u00e7\u00e3o<\/code> se voc\u00ea ainda n\u00e3o o fez.<\/em><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_summary\">Resumo<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Usar o Couchbase Server para armazenamento em cache distribu\u00eddo em seu aplicativo ASP.NET Core \u00e9 uma \u00f3tima maneira de melhorar o desempenho e a escalabilidade do seu aplicativo. Esse tipo de caso de uso de \"engajamento\" \u00e9 o que o Couchbase Server faz de melhor. Para ver os clientes que est\u00e3o usando o Couchbase Server para armazenamento em cache, confira a p\u00e1gina <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/customers\/\">Clientes do Couchbase<\/a> p\u00e1gina.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Se voc\u00ea tiver perguntas ou coment\u00e1rios sobre o projeto Couchbase.Extensions.Caching, n\u00e3o deixe de conferir a se\u00e7\u00e3o <a href=\"https:\/\/github.com\/couchbaselabs\/Couchbase.Extensions\/blob\/master\/docs\/caching.md\">Reposit\u00f3rio do GitHub<\/a> ou o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/c\/net-sdk\/6\/\">F\u00f3runs do SDK do Couchbase .NET<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Como sempre, voc\u00ea pode entrar em contato comigo deixando um coment\u00e1rio abaixo ou encontrando-me em <a href=\"https:\/\/twitter.com\/mgroves\">Twitter @mgroves<\/a>.<\/p>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Distributed caching can help to improve performance of an ASP.NET Core application. This is especially true for an ASP.NET application that\u2019s deployed to a server farm or scalable cloud environment. Using Couchbase Server for caching is one of the many [&hellip;]<\/p>","protected":false},"author":71,"featured_media":3995,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,10126,1816],"tags":[1511,1239,2052],"ppma_author":[8937],"class_list":["post-3988","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-asp-dotnet","category-couchbase-server","tag-cache","tag-caching","tag-extensions"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.4 (Yoast SEO v26.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Distributed caching with ASP.NET Core and Couchbase - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Distributed caching can provide performance and scalability benefits to your ASP.NET Core application. It&#039;s easy with Couchbase Server.\" \/>\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.couchbase.com\/blog\/pt\/distributed-caching-aspnet-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Distributed caching with ASP.NET Core and Couchbase\" \/>\n<meta property=\"og:description\" content=\"Distributed caching can provide performance and scalability benefits to your ASP.NET Core application. It&#039;s easy with Couchbase Server.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/distributed-caching-aspnet-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-09-06T19:46:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T02:40:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/09\/077-hero-cache-chips.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1280\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"Distributed caching with ASP.NET Core and Couchbase\",\"datePublished\":\"2017-09-06T19:46:33+00:00\",\"dateModified\":\"2025-06-14T02:40:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/\"},\"wordCount\":872,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/09\/077-hero-cache-chips.jpg\",\"keywords\":[\"Cache\",\"caching\",\"extensions\"],\"articleSection\":[\".NET\",\"ASP.NET\",\"Couchbase Server\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/\",\"name\":\"Distributed caching with ASP.NET Core and Couchbase - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/09\/077-hero-cache-chips.jpg\",\"datePublished\":\"2017-09-06T19:46:33+00:00\",\"dateModified\":\"2025-06-14T02:40:27+00:00\",\"description\":\"Distributed caching can provide performance and scalability benefits to your ASP.NET Core application. It's easy with Couchbase Server.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/09\/077-hero-cache-chips.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/09\/077-hero-cache-chips.jpg\",\"width\":1920,\"height\":1280,\"caption\":\"Cache memory chips\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Distributed caching with ASP.NET Core and Couchbase\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\/\/crosscuttingconcerns.com\",\"https:\/\/x.com\/mgroves\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Distributed caching with ASP.NET Core and Couchbase - The Couchbase Blog","description":"Distributed caching can provide performance and scalability benefits to your ASP.NET Core application. It's easy with Couchbase Server.","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.couchbase.com\/blog\/pt\/distributed-caching-aspnet-couchbase\/","og_locale":"pt_BR","og_type":"article","og_title":"Distributed caching with ASP.NET Core and Couchbase","og_description":"Distributed caching can provide performance and scalability benefits to your ASP.NET Core application. It's easy with Couchbase Server.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/distributed-caching-aspnet-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-09-06T19:46:33+00:00","article_modified_time":"2025-06-14T02:40:27+00:00","og_image":[{"width":1920,"height":1280,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/09\/077-hero-cache-chips.jpg","type":"image\/jpeg"}],"author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"Distributed caching with ASP.NET Core and Couchbase","datePublished":"2017-09-06T19:46:33+00:00","dateModified":"2025-06-14T02:40:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/"},"wordCount":872,"commentCount":3,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/09\/077-hero-cache-chips.jpg","keywords":["Cache","caching","extensions"],"articleSection":[".NET","ASP.NET","Couchbase Server"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/","name":"Distributed caching with ASP.NET Core and Couchbase - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/09\/077-hero-cache-chips.jpg","datePublished":"2017-09-06T19:46:33+00:00","dateModified":"2025-06-14T02:40:27+00:00","description":"Distributed caching can provide performance and scalability benefits to your ASP.NET Core application. It's easy with Couchbase Server.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/09\/077-hero-cache-chips.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/09\/077-hero-cache-chips.jpg","width":1920,"height":1280,"caption":"Cache memory chips"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/distributed-caching-aspnet-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Distributed caching with ASP.NET Core and Couchbase"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58","name":"Matthew Groves","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"Matthew D. Groves \u00e9 um cara que adora programar. N\u00e3o importa se \u00e9 C#, jQuery ou PHP: ele enviar\u00e1 solicita\u00e7\u00f5es de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente s\u00eanior de marketing de produtos da Couchbase. Seu tempo livre \u00e9 passado com a fam\u00edlia, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele \u00e9 autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/matthew-groves\/"}]}},"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","author_category":"","last_name":"Groves","first_name":"Matthew","job_title":"","user_url":"https:\/\/crosscuttingconcerns.com","description":"Matthew D. Groves \u00e9 um cara que adora programar.  N\u00e3o importa se \u00e9 C#, jQuery ou PHP: ele enviar\u00e1 solicita\u00e7\u00f5es de pull para qualquer coisa.  Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90.  Atualmente, ele trabalha como gerente s\u00eanior de marketing de produtos da Couchbase. Seu tempo livre \u00e9 passado com a fam\u00edlia, assistindo aos Reds e participando da comunidade de desenvolvedores.  Ele \u00e9 autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/3988","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=3988"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/3988\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/3995"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=3988"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=3988"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=3988"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=3988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}