gpt4 book ai didi

c# - Web API 中的数据缓存

转载 作者:行者123 更新时间:2023-11-30 12:59:05 25 4
gpt4 key购买 nike

我正在处理 web api 项目,我的 web api 正在调用存储库。存储库调用第三方数据源来执行 CRUD。调用 数据源 非常昂贵,并且每周更新一次。

于是想到了实现缓存。我见过几个输出缓存包,但它不能满足我的要求,因为:

  1. 如果我输出缓存 Get 方法,我将无法在 GetById 方法中使用相同的缓存输出,也无法将相同的缓存数据用于某些其他操作,例如查找操作。每当发生任何更新/发布时,我还必须手动更新缓存。
  2. 还有一件事我很困惑在这种情况下该怎么做是删除缓存还是更新每当发生 put 或 post 操作时缓存?

我完全不知道要完成这个要求。请建议我如何满足这个要求。我在网上搜索过,但没有找到类似的东西。

我是 SO 和 WebAPI 的新手所以如果问题不符合标准请原谅我

最佳答案

If I output cache Get method, I am not able to use same Cache output in GetById method or the same cached data for some other operation like find opeartion. I have to also manually update cache when ever any update/post happens.

要将缓存数据用于 GetById 和 Find 等不同操作,您需要将数据存储在不同的数据结构中。像 REDIS 这样的缓存支持 GetById 可以使用的对象的 hashmap。这完全取决于您的情况,您需要使用哪种 DS。

One more thing i am confused what to do in this scenario whether remove cache or update cache whenever put or post operation happens?

要回答第一个问题的第二部分和这个问题,我会说您需要在回写和通过缓存写入之间做出选择。您可以在 this article 中阅读有关 WB 和 WT 缓存的更多信息.基本上有两种方法

  1. 每个缓存条目都有一些 TTL,之后您从“数据源”获取数据。优点是您的 POST 和 PUT 操作会更快,因为它不需要更新缓存,但缺点是数据可能会过时一段时间。
  2. 第二个选项是每当发生 POST 或 PUT 操作时使缓存中的相应条目无效。
  3. 第三个选项是在 POST 和 PUT 时更新缓存条目。

就写入/更新延迟而言,选项 1 是最快的,但有获取过时数据的风险。选项 2 会减慢 GET、PUT/POST 操作,选项 3 会减慢写入操作。

您的选择应该取决于系统中读写操作的比例。如果您正在设计的系统读取量很大,那么选项 3 比 2 好。

关于c# - Web API 中的数据缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27119952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com