首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web中的数据缓存

Web中的数据缓存
EN

Stack Overflow用户
提问于 2014-11-25 06:15:54
回答 1查看 781关注 0票数 4

我正在从事web api项目,我的web api正在调用repository.Repository调用第三方数据源来执行CRUD.Calling -- data source非常昂贵,并且每周更新一次。

所以我想实现缓存。我很少看到输出缓存包,但它不能满足我的要求,因为:

  1. 如果输出缓存Get方法,则无法在GetById方法中使用相同的缓存输出,也不能将相同的缓存数据用于查找选项等其他操作。当任何更新/发布发生时,我也必须手动更新缓存。
  2. 还有一件事我很困惑,在这个场景中,当发生put或post操作时,是否删除缓存或更新缓存?

我完全不明白如何完成这个requirement.Please建议我如何满足这个要求,我在网上搜索,但没有发现任何类似的东西。

我在SO和WebAPI上都是新手,所以如果不符合标准,请原谅我。

EN

回答 1

Stack Overflow用户

发布于 2014-11-25 11:01:12

如果输出缓存Get方法,则无法在GetById方法中使用相同的缓存输出,也不能将相同的缓存数据用于查找选项等其他操作。当任何更新/发布发生时,我也必须手动更新缓存。

要将缓存的数据用于不同的操作(如GetById ),并发现需要将数据存储在不同的数据结构中。像REDIS这样的缓存支持GetById可以使用的对象的hashmap。这完全取决于你的情况,你需要使用什么样的DS。

还有一件事我很困惑,在这个场景中,当发生put或post操作时,是否删除缓存或更新缓存?

要回答第一个问题和这个问题的第二部分,我想说的是,您需要在写回和通过缓存写入之间进行选择。您可以在这篇文章中阅读更多关于WB和WT缓存的内容。基本上有两种方法

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27119952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档