2011-09-13 83 views
0

我的access_log文件有几条这样的行...... 10.10.11.69 [13/Sep/2011:09:52:48 +0530]“GET /icons/blank.gif HTTP/1.1”304 - “http://10.10.10.14/production-logs/no2-pg-wallet/”“Mozilla/5.0(Windows; U; Windows NT 6.1; en-US; rv:1.9.2.15)Gecko/20110303 Firefox/3.6。 15“查询redis数据

我想将数据保存在redis数据库中。我可以创建一个自动递增的ID并保存IP,时间戳,页面响应等,如下所示。

redis-cli incr next.news.id 

set news:2:IP "10.10.11.69" 

set news:2:timestamp "[13/Sep/2011:09:52:48 +0530]" 

set news:2:request "GET /icons/blank.gif HTTP/1.1" 

set news:2:response "304" 

set news:2:page "http://10.10.10.14/production-logs/" 

set news:2:browser "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15" 

我有2个问题:

1)如何自动存储访问日志,以Redis的过程?

2)我如何知道页面“production_logs”收到了多少点击?

回答

1

如何自动化将access_log存储到redis的过程?

您可能需要创建一些脚本/程序,这些脚本/程序会在每次创建新日志条目时执行一组命令,或者在一段时间后批量执行此操作(例如计划的作业)。

我如何知道页面“production_logs”收到了多少次匹配?

您可以创建一个键,它将由一些前缀和页面URL(或URL的哈希值),例如url:{url or hash here},并在此关键使用INCRBY命令。如果你想散列页面URL,你可以将这些东西存储在redis散列数据结构中,其中一个字段表示URL的名称,另一个字段用于存储使用HINCRBY命令的点击数。