web-dev-qa-db-fra.com

Comment utiliser redis avec Django?

J'ai entendu parler de redis-cache, mais comment ça marche? Est-il utilisé comme couche entre Django et mon rdbms, en mettant en cache les requêtes rdbms?

Ou est-il censé être utilisé directement comme base de données? Ce dont je doute, puisque cette page github ne couvre aucune information de connexion, aucune installation .. vous indique simplement de définir une propriété de configuration.

90
meder omuraliev

Ce module Python pour Redis a un exemple d'utilisation clair dans le fichier lisez-moi: http://github.com/andymccurdy/redis-py

Redis est conçu pour être un cache RAM. Il prend en charge les clés GET et SET de base, ainsi que le stockage de collections telles que les dictionnaires. Vous pouvez mettre en cache les requêtes SGBDR en stockant leur sortie dans Redis. être pour accélérer votre Django site. Ne commencez pas à utiliser Redis ou tout autre cache tant que vous n’avez pas besoin de la vitesse - n’optimisez pas prématurément.

67
Spike Gronim

Le fait que Redis stocke des éléments en mémoire ne signifie pas qu’il s’agit d’un cache. J'ai vu des gens l'utiliser comme un magasin persistant de données.

Le fait qu’il puisse être utilisé en tant que cache est un indice qu’il est utile en tant que stockage hautes performances. Si votre système Redis tombe en panne, vous risquez de perdre des données qui n'ont pas été réécrites sur le disque. Il existe certains moyens d'atténuer ces dangers, par exemple: une réplique en attente. Si vos données sont critiques, comme si vous dirigiez une banque ou un magasin, Redis pourrait ne pas être le meilleur choix pour vous. Mais si vous écrivez un jeu à fort trafic avec des données en direct persistantes ou des éléments d'interaction sociale et gérez la probabilité de perte de données pour qu'elle soit tout à fait acceptable, alors Redis pourrait valoir le coup d'oeil.

Quoi qu'il en soit, le point reste, oui, Redis peut être utilisé comme base de données.

59

Redis est fondamentalement un magasin KV "en mémoire" avec des tonnes de cloches et de sifflets. C'est extrêmement flexible. Vous pouvez l'utiliser comme magasin temporaire, comme un cache, ou permanent, comme une base de données (avec les mises en garde mentionnées dans d'autres réponses).

Lorsqu'il est combiné avec Django, le meilleur cas d'utilisation/le plus courant de Redis est probablement de mettre en cache les réponses et les sessions.

Il y a un backend ici https://github.com/sebleier/Django-redis-cache/ et une excellente documentation dans le Django docs ici: https : //docs.djangoproject.com/fr/1.3/topics/cache/ .

J'ai récemment commencé à utiliser https://github.com/erussell/Django-redis-status pour surveiller mon cache - fonctionne un charme. (Configurez maxmemory sur redis ou les résultats ne sont pas très utiles).

21
ostergaard

Vous pouvez également utiliser Redis en tant que file d'attente pour des tâches distribuées dans votre Django. Vous pouvez l'utiliser comme courtier de messages pour Celery ou Python RQ .

4
Dmitrii Mikhailov