存储对象的视图计数的有效方法?

时间:2010-12-27 19:23:44

标签: php count memcached persistent-storage

我维护一个应用程序,用户可以在其中存储图像,然后共享它们。该系统由后端的MongoDB提供支持。大多数图像描述页面都被缓存为平面HTML文件,但我可以在加载文件之前运行一些代码。

我决定为系统实现一个视图计数。我想知道什么是最好的存储空间。它应该像Memcached,但它应该每小时左右保存一次视图,所以即使我们的服务器必须重新启动,我们也不会丢失视图计数。

最佳解决方案是什么(最好使用PHP扩展作为客户端)?

4 个答案:

答案 0 :(得分:2)

您可以查看Redis。 NoSQL和memcached之间的交叉排序。您可以将Redis保存到磁盘。 Is memcached a dinosaur in comparison to Redis?

答案 1 :(得分:0)

听起来像每个缓存的平面HTML文件的视图计数?为什么不将它们存储在文件开头的某些代码中。它可以在查看文件时取出......

答案 2 :(得分:0)

我曾经通过在memcached中存储视图计数然后根据视图的数量以随机间隔更新数据库来解决这个问题。存储到数据库的概率是1 / sqrt(视图数)。这有很好的属性。如果视图的数量很小,如4,那么写入数据库的概率是1/2。如果对象上的视图数量很高,比如1,000,000,那么概率就会达到1/1000。它似乎运作良好。

答案 3 :(得分:0)

事情简单......如果您不需要实时报告/统计信息,您应该只解析每日apache日志并将匹配数存储到数据库中,甚至以平面文件格式存储。

<强>优势吗

  1. 它不会损害您现有的应用程序
  2. 它不需要额外的内存缓存
  3. 只需要解析每日日志apache(每天一次)
  4. 可收回
  5. 当然,这并不能阻止您设置cronjob以定期读取/更新数据库(用于更新的视图计数)