【问题标题】:How to use caching on CosmosDB queries如何在 CosmosDB 查询中使用缓存
【发布时间】:2018-07-20 10:08:21
【问题描述】:

我有一个 CosmosDB 数据库,一直查询它是没有意义的,我需要实现缓存,因为 RU 很高。我正在使用来自 MVC 应用程序的数据。在控制器上使用传统的 OutputCache 不是一种选择。你知道如何做到这一点吗?

【问题讨论】:

  • 你看过Azure Redis Cache吗?
  • 或者一个简单的 MemoryCache。这一切都取决于大小、可用的关键候选者......
  • 有很多潜在的缓存解决方案;您使用什么完全取决于您,并且并不真正适用于 Cosmos DB。至于“天价”的 RU 成本(并且知道这意味着什么):有一种方法可以在不查看数据形状、查询、索引等的情况下了解您的 RU 成本。

标签: c# asp.net-mvc azure azure-cosmosdb


【解决方案1】:

查询完数据后,cosmosDB 不再相关,您可以使用自己喜欢的缓存工具集来缓存 POCO。任何你喜欢的。

您可以从简单的 BCL 缓存工具开始:System.Runtime.CachingMemoryCache 类跳过了序列化开销,上手非常简单。一些更友好的介绍也在这里:http://deanhume.com/object-caching-net-4/

如果您确实需要分布式缓存并且基础设施复杂性和管理的开销是可以接受的,那么 Redis 就是一个不错的选择。如果您选择继续使用 System.Runtime.Caching API,您也可以稍后切换到 Redis 作为 System.Runtime.Caching 下的缓存提供程序。见some nuget package seemingly relevant

警告

显然,您应该只缓存允许过时的数据。并非所有内容都可以缓存。您绝对应该重新检查您的 CosmosDB 数据模型和索引,因为设计良好的系统的 RU 成本永远不应被解释为“天价”,也许只是“积极使用”;)

【讨论】:

    猜你喜欢
    • 2010-10-13
    • 2022-01-09
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多