PHP - Redis / Memcachedb / Mongodb或其他持久存储来存储计数器

时间:2010-01-10 02:16:21

标签: php redis memcachedb

通过计数器,它可能是网页浏览量,下载量,投票数等。基本上,不是非常“关键”的数据。

存储这些信息的“最佳”方式是什么? Mysql不是一个好选择。你们用的是什么?

4 个答案:

答案 0 :(得分:10)

我想我会选择Redis,因为:

  • Antirediz(他的昵称)真正积极地发展Redis。 (每次当我查看我的github仪表板时,他都会提交一些新的代码)。由于VMware
  • ,他现在正在开发redis fulltime
  • Redis最终是持久的,因此性能是kickass(首先只使用快速的内存)。
  • Redis具有您需要的原子increment操作。
  • Redis有很多优秀的PHP库。还有一个写成C extension,因此它具有非常好的性能。 Redis website还概述了这些扩展程序。有些是纯PHP代码(运行较小但较慢,但更容易配置)。

答案 1 :(得分:9)

带有upserts的MongoDB非常适合这种情况。

如果您要存储以下内容:

{ "url" : "www.example.com", "pageviews" : 0 }

您可以使用原子操作$ inc:

以原子方式快速增加网页浏览量
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}})

如果使用upsert,则在更新文档之前不必检查文档是否存在。例如,如果你说:

db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}}, {"upsert" : true})

如果文档不存在(页面视图设置为1),则会创建包含www.example.com网址的文档,如果确实存在,则会增加网页浏览量。这意味着您不必担心预先填充集合。

答案 2 :(得分:1)

20世纪90年代着名的观察计数器使用简单的文件存储数字。如果您只需要存储一个数字,那么任何事情都足够好。

答案 3 :(得分:-1)

我认为APC或memcached是不错的选择。