3

我将batsd(其中使用statsd)库与jeremy/statsd-ruby客户端一起用于我的 ruby​​ Web 应用程序(rails)。我必须保持简单的访问统计。伟大的!我使用statsd.increment('users.visits')上述 gem 中的方法。

然后我注意到,这个操作每次都创建新的sorted setzset)并添加一个元素(看起来像"1338932870<X>1)。为什么statsd使用这种方法?将HINCRBY方法与 simlpe 哈希(不是)一起使用会不会更容易和更快zaddzset

我知道,statsd是好的和知名的仪器,但我想知道,它是 redis 中的 counters 标准模式吗?我是redis和nosql的新手,谢谢!

4

1 回答 1

4

我不熟悉这个包,但是如果你只是使用 HINCRBY,你只会计算度量的最后一个值并将其保存在 Redis 中。我猜一个统计包可能需要存储指标的演变(以便随着时间的推移绘制图表或类似的东西)。

使用 zset 是一种存储按时间戳(即时间序列)排序的事件的方法,因此可以保留此度量标准的演变历史。它比仅仅保留最后一个值更慢并且消耗更多的内存,但是你有历史。有关完整故事,请参阅下面的诺亚评论。

使用 HINCRBY 或 INCRBY 实时聚合计数器,使用 zset 存储时间序列是两种常见的 Redis 模式。

于 2012-06-06T15:00:54.623 回答