我想以一种不会对我的数据库造成额外压力的快速方式存储有关对我的站点的请求的信息。目标是使用这些信息来防止滥用并收集有关用户如何与站点交互的信息(ip、GET/POST、url/action、时间戳)。
我目前正在将每个页面请求上的新行保存到数据库。但是,当服务器也已经将相同的信息记录到 nginx 日志文件时,这会通过额外的数据库调用浪费资源。
我想知道我能做些什么来更好地处理这个问题,我有两个想法我想知道是否有更好的方法。
- CRON 作业每天解析访问日志并作为批处理事务保存到数据库。
- RAM 缓存(redis/memcached)存储有关请求的数据,然后 CRON 保存到数据库。
但是,如果我以可以检索所有记录并将它们插入数据库的方式使用键值缓存,我不确定如何存储数据。
我也不知道如何以不会重新阅读条目的方式解析访问日志。
如何以有效的方式记录访问尝试?