listy-django-cache is een deterministisch caching-mechanisme voor Django projecten & nbsp;. Het zal proberen om de cache in-sync met de database te houden door bijwerking tijdens de veranderingen in plaats van te vertrouwen op time-outs. Zoals geïmpliceerd door de naam, Listy ondersteunt opzoeken lijsten van objecten.
installeren
& Nbsp; pip installeren listy-django-cache
Gebruik
Met behulp van Listy is zo eenvoudig als het vervangen van de standaard model manager met een CachingManager en te voorzien van de lijst met toetsen die u wilt opvragen met.
In dit gekunsteld voorbeeld, ik kan opzoeken op basis van pk, maar de volger, of zowel de volger en followee:
import listy
klasse Follow (models.Model):
& Nbsp; # Configure deze cache aan lookup te ondersteunen door 'pk' of 'follower'
& Nbsp; objecten = listy.CachingManager ([('pk',), ('volger',), ('volger', 'followee')])
& Nbsp; gemaakt = models.DateTimeField (auto_now_add = True)
& Nbsp; volger = models.ForeignKey ('Gebruiker', related_name = 'volgt')
& Nbsp; followee = models.ForeignKey ('Gebruiker', related_name = 'volgelingen')
# Volg iemand
Follow.cache.add (volgeling = me, followee = u)
# Volg niet iemand
Follow.cache.delete (volgeling = me, followee = u)
# Haal de gebruikers Ik volg
Follow.cache.get (follower = me)
# Krijg of ik je volgen
Follow.cache.get (volgeling = me, aanhanger = u)
# Haal de graven van de gebruikers Ik volg
vanaf datetime datum import, timedelta
van dateutil.rrule import rrule, dagelijks, wekelijks, maandelijks, jaarlijks
start, end = date.today () - timedelta (dagen = 100), date.today ()
Follow.cache.daily_counts (gemaakt = rrule (DAGELIJKS, dtstart = start, tot eind =))
U kunt een complete set van voorbeelden in test_django_app / caching / tests.py zien.
Argumenten om CachingManager:
- Caches - een lijst van tupels beschrijving van de velden die sleutels in de cache moet worden
- Soft_delete_field - de naam van de delete-veld dat kan worden gebruikt om objecten te verwijderen zonder hen daadwerkelijk te verwijderen uit de database als deze functie wordt ondersteund door het model (standaard Geen)
- Deleted_timestamp_field - de naam van het veld dat moet worden ingesteld op een datum en tijd bij het verwijderen van een object (standaard Geen)
- Enabled_field - de naam van het veld, die bepaalt of een object is ingeschakeld of niet, dit wordt behandeld als een te verwijderen die niet onder normale omstandigheden ongedaan gemaakt worden (standaard Geen)
- Timestamp_field - de naam van het veld dat houd de tijdstempel wordt gebruikt voor tellers (default n)
- Disable_cache - uitschakelen caching, kan worden gebruikt voor het debuggen (standaard False)
- Adres - een functie die het adres van de memcache terug (standaard 127.0.0.1:11211)
- Filter_out_soft_deletes - behandelen zacht verwijderingen als echte schrapt, filteren ze uit bij terugkeer lijsten (standaard True)
De lijst van tupels gedefinieerd door de caches argument is het hart van deze caching-mechanisme. Door het te definiëren we wat lijsten van objecten willen we de cache en bijgewerkt, en hoe we zullen toegang krijgen tot die lijsten
Eigenschappen .
- Zeer makkelijk te gebruiken
- deterministische
- Snelle toegang tot de lijsten van de dingen
- Packs gegevens in compacte vorm (de meeste kleine platen gaan van ongeveer 1k tot 10s bytes)
- On-demand deserialisatie
- Gebruik van prepend memcache commando's voor het snel voegt
- Houdt van het totaal, jaarlijks, maandelijks, wekelijks, en de dagelijkse tellingen voor elk gecached lijst
- Optioneel per-request object register
- Optionele ondersteuning voor zachte verwijderingen
Eisen
- Python
- Django
Reacties niet gevonden