【问题标题】:redis batsd (statsd) counterredis batsd (statsd) 计数器
【发布时间】:2012-06-10 00:05:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby nosql redis statsd


    【解决方案1】:

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

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

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

    【讨论】:

    • 事实上,这几乎正是我们在 batsd 中使用 zset 的原因——我们想要历史记录,并且我们还希望能够轻松截断该历史记录,因此我们不会永远将其保留在 Redis 中(以限制内存使用)。我们还将 INCRBY 用于其他级别的聚合,然后以类似于 zset 的结构将值写入磁盘。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 2015-05-26
    相关资源
    最近更新 更多