2

Web サイトで 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 をヒットしてコンテンツを取得し、適切な統計を更新します (ここでは、day-29、table-2 などを増分できます)。

バックグラウンドアプリにアクセスせずにこれを達成する方法について何か提案はありますか?

4

1 に答える 1

3

追跡パラメータについては、このタイプの作業をユーザーの要求の範囲外に保ちます。統計追跡の遅延ペナルティを彼らに支払わせないでください。access.logからパラメーターを抽出し、redisやデータベースを更新するスクリプトをcronします。

コンテンツのキャッシュに関しては、memcachedモジュールとほぼ同じように機能する最近リリースされたnginxredisモジュールがあります。現在、GETとSELECTのみが実装されています。アプリケーションがキャッシュにデータを投入していることを前提としています。

http://wiki.nginx.org/Nginx3rdPartyModules#HTTP_Redis_Module

サンプル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;
             }
        }
}
于 2009-12-20T13:54:29.660 に答える