如何避免缓存中对象的重复副本?
时间:2020-03-06 14:21:33 来源:igfitidea点击:
我正在使用内存缓存为Web应用程序的模型层设计缓存,我最大的问题之一是数据一致性。
我想到了这样缓存数据:
(键=查询,值=查询的对象ID列表)
对于列表的每个ID:
(键= object.id,值=对象)
因此,每次查询完成后:
如果查询已经存在,我将从缓存中检索列表中表示的对象。
如果不是,则列表的所有对象都将替换所有其他旧值存储在缓存中。
有人使用这个替代方法吗,是上帝吗?还有其他想法吗?
解决方案
欢迎来到并发编程世界。我们将需要学习一些相互排斥的知识。如果我们告诉我们我们要开发哪种语言/平台,我们可以更具体地描述选择。
缓存是其中没有一个正确答案的主题之一,它取决于域。
我们描述的缓存策略可能足以满足域要求。但是,我们似乎并不担心过时的数据。如果缓存的值早于某些系统定义的参数,我通常希望看到一些实体的时间戳,那么它将被认为是陈旧的并重新获取。
有关缓存算法的更多讨论,请参阅Wikipedia(面向初学者)