logging - Redis 作为日志捕获

标签 logging redis real-time bigdata in-memory-database

我正在考虑将 Redis 缓存添加到我的 RT 服务器应用程序中作为日志记录解决方案。 目前,我的应用程序正在使用一个基础设施日志记录解决方案(到磁盘),该解决方案无法在我的负载下工作,导致我的应用程序出现延迟。

我的平均日志消息是 100B X 10,000 条消息/秒 = 1M 日志/秒 我需要保留 5 天的日志,这意味着内存日志记录中 = 1M X 60 秒 X 60 分钟 X 24 小时 = 86400MB = 86.4GB X 5 天 = **432GB**。

出于调试目的,我需要日志的访问速度。

你认为redis可以处理我的数字吗? 你有没有更好的解决方案来处理我的问题?

10倍

最佳答案

根据你的问题,我可以看出你知道我们在谈论 RAM,对吧?

我的意思是说,这将非常非常昂贵,而且您不需要它。此外,使用 Redis 查询它的方式非常有限。

构建如此复杂且昂贵的解决方案并且没有查询它的好方法不是一个好主意。 :)

我的想法是创建一个消息服务器。我建议你看看 AWS 的 SQS,他们会为你处理基础设施。如果您不能使用 AWS,也许您可​​以在您的结构中安装 RabbitMQ 或 ActiveMQ。

因此,通过这种方式,您可以将所有消息发送到该队列,无论是哪个队列。然后你构建一个应用程序来使用然后把它放在结构化数据库中,我建议使用 MongoDB。它速度快,健壮,可以有一个很好的缓存,你定义它,你也可以使用磁盘作为存储。

使用此解决方案,您不必担心应用程序的吞吐量,只需将消息发送到消息服务器上,然后让消费者完成从那里读取并将其发送到您的数据库解决方案的讨厌工作.

关于logging - Redis 作为日志捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28314734/

相关文章:

.net - 是否有支持简单编程配置的 .Net 日志记录框架?

java - 比较 log4j 和 Logger

node.js - connect-redis client.unref 不是函数

redis - 了解 Redis 中排序集中缺失数字的最佳方法是什么?

windows - Windows下【Redis 64Bit】能否用于生产环境?

real-time - 理解 min_tag_id 和 max_tag_id

java - 是否可以使用 Logback 为每个日志事件添加序列号?

azure - 如何从 Azure Web App 上的 go 应用程序跟踪日志

android - Android 上有选项可以将数据实时发送到服务器吗?

mysql - 使用 Redis 缓存实时单页应用程序中使用的数据