如何避免缓存中对象的重复副本?

时间:2008-09-18 14:16:41

标签: php caching memcached

我正在使用memcache为Web应用程序的模型层设计缓存,我最大的问题之一是数据一致性。 我想到了这样的缓存数据: (key = query,value =查询的对象id列表) 对于列表的每个id: (key = object.id,value = object)

因此,每次查询完成时: 如果查询已存在,则从缓存中检索列表中发出信号的对象。 如果没有,则列表的所有对象都存储在缓存中,替换任何其他旧值。

有人使用这种替代品,是上帝吗?还有其他想法吗?

2 个答案:

答案 0 :(得分:1)

缓存是没有正确答案的主题之一 - 它取决于您的域名。

您描述的缓存政策可能足以支持您的域名。但是,您似乎并不担心陈旧数据。通常我会期望看到一些实体的时间戳 - 如果缓存的值比某个系统定义的参数更旧,那么它将被视为陈旧和重新获取。

有关缓存算法的更多讨论,请参阅Wikipedia(对于初学者)

答案 1 :(得分:0)

欢迎来到并发编程的世界。您需要了解一下mutual exclusion。如果您告诉我们您正在开发哪种语言/平台,我们可以更具体地描述您的选择。