当99.9%的数据经常更改时要缓存什么?

时间:2008-10-23 08:10:40

标签: language-agnostic caching

好的,我知道之前我曾经问过这个问题,答案基本上是缓存数据不会经常变化。

当至少99.9%的数据发生变化时,人们会怎么做?

在我的项目中,唯一没有更新或不会经常更新的表将是成员个人资料信息(姓名/地址和设置)

那么如何仍然启用某种缓存,但保持并确保在应用更改时更新正在查看的数据?

5 个答案:

答案 0 :(得分:7)

我想,并非所有数据中99.9%都会发生变化,但99.9%的数据位置发生了变化。

例如,如果您正在运行公告板,这意味着将有稳定的新帖子流,但旧帖子将保持不变,甚至旧帖子将长时间保持不变。< / p>

在这种情况下,您需要一种方法来使旧的缓存数据无效,这样您就可以在查看线程(在示例中)时立即构建缓存。如果其中一个线程发生了更改(即当有人添加新帖子时),则此一个缓存项目将被删除/标记为过时,因此下次查看时,将重建该项目。但是,其他仍未更改的项目将使用缓存。

答案 1 :(得分:2)

如果您的数据在每次查看时都会发生变化,那就会失去缓存点 - 您应该寻找其他类型的优化。

如果它每隔一段时间都会发生变化,那么它可能仍然不值得缓存 - 不要忘记将某些内容存储到缓存会产生一些开销

答案 2 :(得分:1)

取决于。

如果你愿意做出这样的牺牲(即事情变得非常糟糕,性能方面),你可能会考虑将数据缓存一小段时间(10秒,30秒,1分钟......)减少数据库的负载。数据不会是最新鲜的,但它可能足够新鲜。

如果几乎​​没有任何负载,则无需开始摆弄缓存。真的,没有必要找到它们不存在的问题。毕竟 - 许多数据库引擎都有自己的缓存,不仅包括数据,还包括执行计划。

答案 3 :(得分:1)

真正相关的考虑因素是这99.9%的信息经常变化的频率,是每次访问,每秒,每分钟,每小时?访问以上的任何内容,取决于您拥有的每个时间单位的请求数量以及您选择的缓存方案,都可能有意义。

只要平均检索时间减少,就会缓存。 你必须衡量这一点并决定

一些缓存验证技术是在访问时检查有效性或者使用缓存存储时间戳和到期时间。检查每次访问的有效性是否更加昂贵,并且在某些情况下,时间戳+到期可能会提供过时的内容。

答案 4 :(得分:0)

在单实例Web应用程序场景中,您可以在对象更改时以及在数据库中手动更新缓存。

偶尔你可以刷新缓存以确保没有任何不同步(例如,如果数据库是由其他应用程序更新的)。

请注意,这对于企业级方案不适用。