【问题标题】:Want to use Redis as an events statistics store想要使用 Redis 作为事件统计存储
【发布时间】:2014-10-21 06:14:49
【问题描述】:

我对 Redis 真的很感兴趣,我有一个想法,想知道它是否是一个合适的用例,或者它是否对数据存储有任何其他建议。任何有关存储数据的提示也将不胜感激。

我的想法只是一个简单的事件系统,所以一个事件发生,它存储在redis中如下

键 |价值 [unixtimestamp]:[系统]:[事件] | [结果]

数据可以是任何销售、印象、错误、API 响应时间、页面加载时间任何实时分析。然后我希望能够根据这些数据制作图表。

【问题讨论】:

    标签: redis


    【解决方案1】:

    这不是一个理想的设计,因为它不能有效地支持您的读取模式,并且如果您的 [结果] 很短/很小,它可能会浪费 RAM。相反,请考虑使用 Redis 的 sorted sets 以时间戳作为分数,方式如下:

    ZADD [system]:[event] [timestamp] [result]
    

    请注意,集合成员必须是唯一的,因此如果 [result] 的基数较低,请通过将时间戳连接到它(并在绘制图表时将其过滤掉)使其唯一,即:

    ZADD [system]:[event] [timestamp] [result]:[timestamp]
    

    这样您就可以通过调用 ZRANGEBYSCORE 并绘制结果来获取测量范围。

    【讨论】:

    • 如果我每分钟添加 100 条或 1000 条记录,是否需要添加除时间之外的其他类型的唯一 ID?
    • 由于时间戳分辨率为 1 秒,如果您有可能获得与该系统/事件相同的结果,那么可以。
    • 感谢您的帮助,我仍然很难理解 Redis。如果我想存储一个更复杂的键,比如哈希或者只是一些 json。例如:{page: x, loadtime: y} 并且我想按该数据进行分组或查询,是否必须在我的应用层中,或者 redis 也可以在这里提供帮助
    • 我很乐意提供帮助,但是因为这是一个不同的问题,所以让我们在这里打开一个新问题,或者如果你想摸摸头,请直接给我发电子邮件:itamar at redislabs dot com
    • 谢谢我又添加了一个问题stackoverflow.com/questions/26497539/…
    猜你喜欢
    • 2012-08-17
    • 2015-05-14
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    相关资源
    最近更新 更多