redis - 想使用 Redis 作为事件统计存储

标签 redis

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

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

key |值(value) [unixtimestamp]:[系统]:[事件] | [结果]

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

最佳答案

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

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

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

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

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

关于redis - 想使用 Redis 作为事件统计存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26475557/

相关文章:

ruby-on-rails - 在 sidekiq ui 上显示多个 sidkekiq 进程

node.js - PouchDB上有没有类似Redis的过期策略?

command - Redis 命令队列大小

spring - 嵌套异常是 redis.clients.jedis.exceptions.JedisConnectionException : Could not get a resource from the pool

python - 将大文件加载到 Flask 中

lua - 使用 redis.call ("sinter", ...) 命令将多个集与 lua 脚本相交

go - Redigo:尝试连接到池时无效的内存地址或零指针取消引用

ruby-on-rails - 在 rails 中使用 resque 调度程序时如何检查作业的状态?

laravel - localhost 在 laravel 5.2(socket.io) 中没有发送任何数据

node.js - 大量日志和redis如何处理?