2008-09-18 116 views
1

我正在使用memcache为Web应用程序的模型层设计缓存,我最大的问题之一是数据一致性。 它来到我的脑海缓存的数据是这样的: (键=查询,值=查询的对象ID列表结果) 对列表中的每个ID: (键= object.id,值=对象)如何避免缓存中对象的重复副本?

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

有人使用这种替代方法,它是上帝吗?任何其他想法?

+0

谢谢!我正在开发PHP。 – Lucia 2008-09-18 14:26:36

回答

1

缓存是没有一个正确答案的那些主题之一 - 这取决于你的域名。

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

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

0

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