基本上,我想要跟踪的一些指标中的一部分是某些对象在我们的营销平台上获得的印象量。如果您想象我们显示了大量的对象,那么我们希望每次服务对象时都要跟踪。
每个对象都通过一个网关/接口返回给客户端。因此,如果您想象一个请求是为了一个具有某些搜索条件的页面而出现的,那么搜索请求将被代理到我们的Solr索引中。
然后我们得到10个结果。
这10项成果中的每一项都应视为一种印象。
我很难找到一个令人难以置信的快速和准确的实现。
对你该怎么做有什么建议吗?你可以投入任意数量的技术。我们目前使用,Gearman,PHP,Ruby,Solr,Redis,Mysql,APC和Memcache。
最终,所有的印象最终都应该保留到mysql身上,我可以每小时做一次。但是,我不知道如何在不影响实际搜索请求的加载时间的情况下,快速地存储内存中的印象。
想法(我刚添加了备选案文4和5)
fastcgi_finish_request()将请求刷新回nginx,然后将结果插入到Redis中。编辑以回答问题:
这些数据的可靠性并不重要。只要这是个最好的猜测。我不想看到有30%的人印象不佳。但我会允许10%的宽容-/+精英。
发布于 2012-07-14 15:43:22
我认为你最好的两种选择是:
如果您有很高的redis流量,或者只想卸载它并获得它的备份,您也可以使用一个读取从进行导出到MySQL。如果这样做,可以将主redis实例设置为不刷新到磁盘,从而提高写入性能。
有关更广泛地使用redis的特性用于这类跟踪的其他选项,请参见这个答案,您还可以避免MySQL部分,并从redis中提取数据,从而使整个系统更简单。
发布于 2012-07-14 02:08:30
我会做一些类似于#2的事情,并将数据传递给最快的队列,以更新Redis计数器。我对Gearman不太熟悉,但我敢打赌这件事很慢。如果您的Redis客户端支持异步写入,我会使用它,或者将它放在一个单独线程上的队列中。您不想放慢响应速度,等待更新计数器。
https://stackoverflow.com/questions/11478966
复制相似问题