首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP - Redis/Memcachedb/Mongodb或其他持久存储来存储计数器

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

Stack Overflow用户
提问于 2010-01-10 10:16:21
回答 4查看 4K关注 0票数 6

计数器可以是页面浏览量,下载量,投票数等,基本上,不是非常‘关键’的数据。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-14 00:28:16

我想我会选择Redis,因为:

  • Antirediz(他的昵称)正在积极开发Redis。(每次我查看我的github仪表板时,他都会提交一些新代码)。他现在正在开发redis fulltime,这要归功于VMware
  • Redis最终是持久化的,所以性能非常好(首先只使用快速的内存)。
  • Redis有一个你需要的原子increment操作。
  • Redis有很多很好的PHP库。还有一个是写成C extension的,所以它有很好的性能。Redis website还对这些扩展进行了概述。有些是纯PHP代码(运行速度稍慢,但更容易配置)。
票数 10
EN

Stack Overflow用户

发布于 2010-01-12 06:28:54

带upserts的MongoDB对此很有帮助。

如果您存储的内容如下:

代码语言:javascript
复制
{ "url" : "www.example.com", "pageviews" : 0 }

使用原子操作$inc,你可以非常快速地原子地增加页面浏览量:

代码语言:javascript
复制
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}})

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

代码语言:javascript
复制
db.downloads.update({'url' : 'www.example.com'}, {'$inc' : {pageviews : 1}}, {"upsert" : true})

如果不存在带有url www.example.com的文档( pageviews设置为1),则会创建该文档;如果存在,则会增加pageviews。这意味着您不必担心预先填充集合。

票数 9
EN

Stack Overflow用户

发布于 2010-01-10 10:27:01

20世纪90年代著名的视图计数器使用简单的文件来存储数字。如果你所需要的仅仅是存储一个数字,那么任何东西都足够好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2035808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档