将缓存值同步回数据库的解决方案?

时间:2012-07-30 05:28:02

标签: memcached key-value data-consistency

下面是场景: 这是一个访问统计系统,就像Blogger的overviewstats功能一样。 统计数据存储在数据库(如MySQL)中,同时使用键值缓存(现在是memcache)来缓存访问计数,每次访问只更新缓存中的值。

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

1 个答案:

答案 0 :(得分:0)

Memcached是一个缓存,因此您需要将其用作一个缓存。更新memcached中的访问计数时,还应将更新排入队列,以便将它们异步写入数据库。这样,可以从数据库重新加载从缓存中掉出的计数。

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