想要将Redis用作事件统计信息存储

时间:2014-10-20 21:54:09

标签: redis

我对Redis非常感兴趣,我有一个想法,想知道它是否是一个合适的用例,或者它是否对数据存储没有任何其他建议。此外,任何有关存储数据的提示都将受到赞赏。

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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