nginx/redis与url中跟踪参数的处理

nginx/redis与url中跟踪参数的处理,url,nginx,tracking,redis,Url,Nginx,Tracking,Redis,我正在我的网站上使用nginx和redis。对于我网站上的几个项目,我想将跟踪参数添加到它们的URL中,这样当用户单击某个项目时,除了为用户请求的内容提供服务外,我还可以收集用户使用情况的统计信息。我正在寻找如何从nginx在redis中捕获这些统计数据的方法,也就是说,不必访问后台应用程序 例如,假设我的页面上有几行表,每个表都以行/列格式保存项目。因此,对于{table:2,row:1,column:3}中的一个项目,如果实际的url是:www.mysite.com/news/dodi,那么

我正在我的网站上使用nginx和redis。对于我网站上的几个项目,我想将跟踪参数添加到它们的URL中,这样当用户单击某个项目时,除了为用户请求的内容提供服务外,我还可以收集用户使用情况的统计信息。我正在寻找如何从nginx在redis中捕获这些统计数据的方法,也就是说,不必访问后台应用程序

例如,假设我的页面上有几行表,每个表都以行/列格式保存项目。因此,对于{table:2,row:1,column:3}中的一个项目,如果实际的url是:www.mysite.com/news/dodi,那么我想嵌入url:www.mysite.com/news/dodi/day=29?table=2&row=1&column=3。当用户点击它时,nginx将点击redis获取内容,并更新相应的统计数据,如第29天的表2所示


关于如何在不点击后台应用程序的情况下实现这一点,有什么建议吗?

对于跟踪参数,请将此类工作保持在用户请求的范围之外。不要让他们为统计跟踪支付延迟惩罚。Cron从access.log中提取参数并更新redis和/或数据库的脚本

在缓存内容方面,最近发布的nginx redis模块的工作方式与memcached模块基本相同。目前仅实现GET和SELECT。假设应用程序正在填充缓存

nginx.conf示例:

http
{
 ...
        server {
            location / {
                set $redis_db   "0";
                set $redis_key  "$uri?$args";
                redis_pass      127.0.0.1:6379;
                error_page      404 502 504 = @fallback;
             }

             location @fallback {
                 proxy_pass      backed;
             }
        }
}

关于Cron脚本和Nginx的Redis模块,这一点很好。几个问题:[1]将SET/INCR添加到NginRedis模块有多困难?[2] 根据上面的示例,内容是从redis获取的。由于这查询redis,是否可以添加额外的作业来增加几个redis键?有什么方法可以做到这一点吗?如果redis速度很快,那么用户在这项添加的任务中所受到的惩罚将达到微秒级——因此用户不会感受到延迟开销。整个模块大约有600行代码。因此,添加额外的命令应该不是一件大事。也就是说,我从来没有写过nginx模块。谢谢Ryan。你能解释一下上面的问题2吗?不确定。您可以在模块的源代码中翻找,非常清楚地看到redis操作发生在哪里。Ethan,您可以查看它支持完整redis协议的断言。