2

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

我决定为系统实施视图计数。我想知道什么是最好的存储位置。它应该类似于 Memcached,但它应该每隔一小时左右保存一次查看次数,因此即使我们的服务器必须重新启动,我们也不会丢失查看次数。

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

4

4 回答 4

2

你可以看看 Redis。有点像 NoSQL 和 memcached 之间的交叉。不过,您可以将 Redis 保存到磁盘。 与 Redis 相比,memcached 是恐龙吗?

于 2010-12-30T03:34:34.770 回答
0

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

好处?

  1. 它不会损害您现有的应用程序
  2. 它不需要额外的内存缓存左右
  3. 只需要解析每日日志apache(每天一次)
  4. 可恢复的

当然,这不会阻止您设置 cronjob 以定期读取/更新数据库(以获得更新的视图计数)

于 2010-12-30T02:57:30.520 回答
0

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

于 2010-12-27T19:45:35.780 回答
0

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

于 2010-12-30T02:52:24.637 回答