Question

J'utilise nginx et Redis dans mon site. Pour plusieurs articles sur mon site, je veux ajouter params de suivi à leurs urls de sorte que lorsqu'un utilisateur clique sur un élément, je peux recueillir des statistiques d'utilisation de l'utilisateur en dehors de servir l'utilisateur de contenu demandé. Je cherche des méthodes sur la façon de saisir cette statistique dans Redis de nginx, à savoir sans frapper l'application de fond.

Pour par exemple., Supposons que j'ai plusieurs rangées de tables sur ma page et chaque élément de maintien de la table au format ligne / colonne. Ainsi, pour un élément dans {tableau: 2, ligne 1, colonne: 3} si l'URL est: www.mysite.com/news/dodi, je veux intégrer l'url: www.mysite.com/news / dodi / jour = 29? table = 2 & rangée = 1 & colonne = 3. Lorsque l'utilisateur clique dessus, nginx frappera Redis pour récupérer le contenu et mettre à jour également les statistiques appropriées (ici peut être incrément jour-29, table-2, ...).

Toute suggestion sur la façon dont je réalise cela sans frapper l'application de fond?

Était-ce utile?

La solution

Pour les paramètres de suivi, gardez ce type de travail en dehors de la portée de la demande des utilisateurs. Ne pas les faire payer la pénalité de temps d'attente pour les statistiques de suivi. Cron un script qui extrait les paramètres de Redis access.log et mises à jour et / ou base de données.

En termes de contenu de la mise en cache, il y a un module Redis nginx a récemment publié qui fonctionne à peu près de la même manière que le module memcached. Seulement GET et SELECT sont actuellement mis en œuvre. L'hypothèse est que votre application est peuplant le cache.

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

Echantillon 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;
             }
        }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top