2013-03-29 4 views
3

J'essaie d'utiliser django-cache-machine pour mettre en cache des requêtes dans mon application, mais je veux utiliser Redis comme backend. The docs ne pas vraiment expliquer comment faire cela, mais the repository est rempli de références Redis, donc je suis sûr que c'est possible. Je veux m'assurer de bien faire les choses, donc je me demande si quelqu'un a déjà fait l'expérience de la configuration et peut-être plus important encore, sait s'il y a des mises en garde?django-cache-machine et Redis

Répondre

-1

J'ai un peu d'expérience dans mon projet, un système de rapport qui génère des tables d'environ 50 millions d'enregistrements.

La base de données est Mysql et je pourrais montrer mes arrangements et modèles FYI.

paramètres:

# cache machine 
CACHES = { 
    'default': { 
     'BACKEND': 'caching.backends.memcached.MemcachedCache', 
     'LOCATION': [ 
      '127.0.0.1:11211', 
     ], 
     'PREFIX': 'report:', 
    }, 
} 
CACHE_COUNT_TIMEOUT = 60 * 24 # one day 
CACHE_EMPTY_QUERYSETS = True 

modèles:

class App(**CachingMixin**, models.Model): 
    **objects = CachingManager()** 

    name = models.CharField(max_length=64, 
          default='') 

Notez que cache machine fonctionne bien pour query_set. filtre et compte, pas bon pour query_set. annoter ou agréger. Bien sûr, n'oubliez pas de lancer votre client memcache en premier. En cours d'exécution, vous pouvez voir les journaux de cache-machine dans votre fichier django * .log pour vous indiquer le cache à succès.

3

Dans vos paramètres définis:

CACHE_MACHINE_USE_REDIS = True

REDIS_BACKEND = Redis: //127.0.0.1: 6379 socket_timeout = 0,1

https://github.com/jbalogh/django-cache-machine/blob/master/caching/invalidation.py#L187 https://github.com/jbalogh/django-cache-machine/blob/master/caching/invalidation.py#L213

+1

S'il vous plaît noter, lors de l'établissement? CACHE_MACHINE_USE_REDIS = Vrai, django-cache-machine n'utilise pas réellement Redis pour mettre en cache vos objets de modèle, vous devez donc configurer memcached. Il utilise uniquement Redis pour stocker et manipuler les listes de vidage. –