listy-django-cache est un mécanisme de mise en cache déterministe pour des projets Django & nbsp;. Il va tenter de maintenir le cache en synchronisation avec la base de données en mettant à jour lors des changements au lieu de compter sur les délais d'attente. Comme son nom l'indique, Listy supporte les recherches des listes d'objets.
Installer
& Nbsp; pip installer listy-django-cache
Utilisation
Utilisation Listy est aussi simple que de remplacer le gestionnaire de modèle par défaut avec un CachingManager et de lui transmettre la liste des touches que vous souhaitez interroger avec.
Dans cet exemple artificiel, je peux regarder sur la base pk, juste le suiveur, ou les deux le suiveur et followee:
listy d'importation
Suivre de classe (models.Model):
& Nbsp; # Configurer ce cache pour soutenir recherche par «pk» ou «suiveur»
& Nbsp; objets = listy.CachingManager ([('pk',), («suiveur»,), («suiveur», «followee ')])
& Nbsp; créé = models.DateTimeField (auto_now_add = True)
& Nbsp; suiveur = models.ForeignKey ("Utilisateur", related_name = 'suit')
& Nbsp; followee = models.ForeignKey ("Utilisateur", related_name = 'followers')
# Suivez quelqu'un
Follow.cache.add (suiveur = moi, vous followee =)
#Unfollow Quelqu'un
Follow.cache.delete (suiveur = moi, vous followee =)
# Obtenir les utilisateurs que je suivre
Follow.cache.get (suiveur = moi)
# Obtenir si je vous suis
Follow.cache.get (suiveur = moi, adepte = vous)
# Obtenir les chiffres pour les utilisateurs que je suivre
partir de la date d'importation datetime, timedelta
de dateutil.rrule RRULE d'importation, quotidien, hebdomadaire, mensuel, annuel
début, fin = date.today () - timedelta (jours = 100), date.today ()
Follow.cache.daily_counts (créé = RRULE (QUOTIDIEN, dtstart = commencent, jusqu'à fin =))
Vous pouvez voir un ensemble complet d'exemples dans test_django_app / cache / tests.py.
Arguments à CachingManager:
- Caches - une liste de tuples décrivant les domaines qui devraient être les clés dans le cache
- Soft_delete_field - le nom du champ de suppression qui peut être utilisé pour supprimer des objets sans les retirer effectivement de la base de données si cette fonction est prise en charge par le modèle (par défaut Aucun)
- Deleted_timestamp_field - le nom du champ qui devrait être fixé à une date-heure lors de la suppression d'un objet (par défaut Aucun)
- Enabled_field - le nom du champ qui définit si un objet est activée ou non, elle est traitée comme une suppression qui ne peut pas être annulée dans des circonstances normales (par défaut Aucun)
- Timestamp_field - le nom du champ qui détiennent l'horodatage à utiliser pour les compteurs (par défaut Aucun)
- Disable_cache - désactiver le cache, peut être utilisé pour le débogage (par défaut False)
- Adresse - une fonction qui renvoie l'adresse du memcache (défaut 127.0.0.1:11211)
- Filter_out_soft_deletes - traitent suppressions douces comme de véritables suppressions, les filtrer lors du retour des listes (par défaut True)
La liste de tuples définies par l'argument de caches est le cœur de ce mécanisme de mise en cache. Par elle, nous définissons ce qui répertorie des objets que nous voulons en cache et de mise à jour, et comment nous allons accéder à ces listes
Caractéristiques :.
- Très facile à utiliser
- déterministe
- Accès rapide à des listes de choses
- Packs données dans une forme compacte (plus petits dossiers vont d'environ 1k jusqu'à 10s d'octets)
- de désérialisation Sur demande
- L'utilisation de la commande de préfixe de memcache pour la restauration rapide ajoute
- Conserve la trace du total, chaque année, les comptes mensuels, hebdomadaires et quotidiens pour chaque liste mise en cache
- Facultatif registre d'objets par-demande
- Support optionnel pour les suppressions douces
Exigences :
- Python
- Django
Commentaires non trouvées