2012-07-30 60 views
0

下面是场景: 这里是一个访问统计系统,就像Blogger的overviewstats函数一样。 统计数据在数据库(如MySQL)中持久存储,而使用键值缓存(现在是memcache)来缓存访问计数,每个访问只会更新缓存中的值。解决方案将缓存值同步到数据库?

现在的问题是如何将最新的计数值同步到数据库? 正常的解决方案是在某段时间后回写,但是当没有足够的空间时,memcache将放弃项目,某些更新可能会丢失。 所以我认为更好的解决方案是,如果memcache可以在丢弃某个项目时发送消息(如JMS),然后我可以将该项目同步到数据库。 看来,memcache不提供此功能,有没有其他的键值缓存可以做到这一点? 或者有没有更好的解决方案?

回答

0

Memcached是一个缓存,所以你需要将它作为一个。在更新memcached中的访问计数时,还应该使更新排入队列,以便它们可以异步写入数据库。这样,从缓存中退出的计数就可以从数据库重新加载。

我喜欢memcached排入即将被丢弃的项目的想法,但由于性能考虑,它可能不会在主项目中发生。

+0

谢谢,实际上我们使用队列来异步更新数据库。我只是找到一些更好的解决方案,以避免每次访问更新数据库,我认为没有必要 – situch 2012-07-31 11:23:22