ruby-on-rails - Ruby on Rails - 使用日志记录批量插入数据
问题描述
我的应用程序是一个分析应用程序,每秒从多个站点获取实时数据,所有这些都添加到insights
表中。
目前,每个数据请求都被发送到log_insight
操作并添加到日志文件中,如下所示:
class Insight < ApplicationRecord
def self.write_log(log_file, log_line)
File.open(log_file, "a") { |file| file.puts (log_line.gsub("\n", " ")) }
end
end
class InsightsController < ApplicationController
def log_insight
Insight.write_log('log/insights.log', data.to_json)
end
end
每隔 30 分钟,这些日志就会添加到insights
表中(我正在使用Activerecord-Import
gem)insights.log
,并且正在创建一个新日志,并且该过程继续进行。
PS:一整天都有大约一百万条记录正在处理并添加到insights
表中。
我觉得这不是有效或正确的方法。
我一直在考虑的一个建议是redis
在内存中使用和写入日志,每 30 分钟取出所有内容并执行flush
.
Rails 6.1.4
Ruby 2.5.8
Redis 4.4
任何建议都非常感谢!
解决方案
推荐阅读
- wordpress - 无法访问当前的 Wordpress 网页
- html - 从列优先的 div 中创建表
- javascript - 如何将错误显示添加到 React 组件
- arrays - 是否有 Perl 6 等效的字节数组?
- twitter-bootstrap - 在 Vue 中,v-binding 对 Bootstrap Toggle Checkboxes 的“checked”属性不起作用?
- ios - 跨多个故事板的导航栏
- cyrillic - 西里尔 Google 字体“Montserrat”无法加载
- opengl - glReadPixels() 如何获取实际深度而不是标准化值?
- php - 使用PHP通过变量选择日期之间的行
- javascript - JavaScript 松弛 api jquery