我正在从事web api项目,我的web api正在调用repository.Repository调用第三方数据源来执行CRUD.Calling -- data source非常昂贵,并且每周更新一次。
所以我想实现缓存。我很少看到输出缓存包,但它不能满足我的要求,因为:
GetById方法中使用相同的缓存输出,也不能将相同的缓存数据用于查找选项等其他操作。当任何更新/发布发生时,我也必须手动更新缓存。我完全不明白如何完成这个requirement.Please建议我如何满足这个要求,我在网上搜索,但没有发现任何类似的东西。
我在SO和WebAPI上都是新手,所以如果不符合标准,请原谅我。
发布于 2014-11-25 11:01:12
如果输出缓存Get方法,则无法在GetById方法中使用相同的缓存输出,也不能将相同的缓存数据用于查找选项等其他操作。当任何更新/发布发生时,我也必须手动更新缓存。
要将缓存的数据用于不同的操作(如GetById ),并发现需要将数据存储在不同的数据结构中。像REDIS这样的缓存支持GetById可以使用的对象的hashmap。这完全取决于你的情况,你需要使用什么样的DS。
还有一件事我很困惑,在这个场景中,当发生put或post操作时,是否删除缓存或更新缓存?
要回答第一个问题和这个问题的第二部分,我想说的是,您需要在写回和通过缓存写入之间进行选择。您可以在这篇文章中阅读更多关于WB和WT缓存的内容。基本上有两种方法
就写/更新延迟而言,选项1是最快的,但有获取陈旧数据的风险。选项2将减慢GET、PUT / POST操作,选项3将减慢写操作。
您的选择应该取决于系统中读写操作的比率。如果您正在设计的系统读得很重,那么选项3比2更好。
https://stackoverflow.com/questions/27119952
复制相似问题