| stockpyle Een eenvoudige meerlagige opslag- en caching-API |
Download nu |
stockpyle Rangschikking & Samenvatting
- Naam uitgever:
- Matt Pizzimenti
- Uitgever website:
- http://rfacebook.rubyforge.org/
stockpyle Tags
stockpyle Beschrijving
Een eenvoudige meerlagige opslag- en caching-api StockPyle is een Python-module die een eenvoudige manier biedt om een reeks opslagcontainers in te stellen voor het maken van eenvoudige schrijf-through-opslag.usage: eenvoudigste script dat een cache op twee niveaus instelt met memcached en lokaal procesgeheugen: van StockPyle importeren MultiShistore, Memcachestore, ProcessMemoryStore # Instantiate de MultiSeore als een schrijf-through cachepm = procesmemorystore () MC = MEMCACHESTORE (Servers = ) Store = MultiShristore () # Verkeer een klasse is uniek voor elke (bar, zap) Combinatieclass foo (object): __Stockpyle_Keys__ = Def __init __ (zelf, bar, zap): self.bar = bar self.zap = zap # create en Save a Foo to the multiqoreobj = foo (bar = 444, zap = 888) winkel.put (obj) # ophalen een foo uit de winkel, gebaseerd op de (bar, zap) combinatie # Dit zal eerst de lokale geheugencache ophalen , en vermijd memcache # omdat het object al cached theretrieved_obj = store.get (foo, {"bar": 444, "zap": 888}) Dit voorbeeld is niet die interes ting, omdat we twee caches gebruiken. Laten we er een doen die sqlalchemy-objecten ondersteunt: van StockPyle.stores Import MultiShristore, Sqlalchemystore, Memcachestore, ProcessMemoryStorePM = ProcessMemoryStore () MC = MEMCACHESTORE (Servers = ) SA = SQLALCHEMMYSTORE () Store = MultiShristore (PM, MC, SA]) # Bewaar het, dit zal het door de cache schrijven en in de databasepersistent_obj = mysqlalchemybackedclass () Store.put (Persistent_obj) Noteer de bestelling in de Multiestore-verklaring: de Sqlalchemystore komt als laatste, omdat het handelt als de laatste persistentie laag. Daarop wordt het procesgeheugen geprobeerd en probeer dan Memcache te proberen en de database ten slotte te controleren. Ook kunnen we de procedure-geheugencache en de MEMCACHED behandelen anders met behulp van verschillende expiraties. Misschien wilt u bijvoorbeeld het procesgeheugen om snel te verlopen, maar MEMCACHED om iets langer mee te gaan, omdat u het daadwerkelijk consistent kunt houden op meerdere machines. Deze voorbeeld dwingen foo-objecten om agressiever te worden verlopen van het lokale geheugen dan Memcached: PM = MEMORMOUNTYSTORE () MC = MEMCACHEORE (Servers = ) SA = SQLALCHEMYSTORE () Store = MultiShristore (PM, MC] ) # Foo-objecten duren 60 seconden in het lokale geheugen, en 5 minuten in Memcachepm.Configure (klassen = , lifetime = 60) mc.configure (klassen = , lifetime = 5 * 60) Wil je een grijpen Bos van objecten? Gebruik batch_get: obj1, obj2, obj3 = store.batch_get (foo, ) Wil je een heleboel objecten opslaan? Gebruik batch_put: obj1 = foo (111, 777) OBJ2 = FOO (222, 888) OBJ3 = FOO (333, 999) Store.batch_put () Objecten verwijderen is eenvoudig (batch-verwijderingen binnenkort): Winkel.Delete (OBJ1) U kunt de opslagbare helperklasse gebruiken om toegang te krijgen tot toegang tot de opslag-API's: van stockpyle import storableclass bar (bewaarbaar): __Stockpyle_Keys__ = Def __init __ (zelf , foo, bar): self.foo = foo self.bar = bar # binden aan een opslagobjecten = procesmemorystore () bar.bind (winkel) # Save a DoborbJJ = bar (111, 777) obj.put () # een objectobj = bar.get ({"foo", "bar"}) # Verwijder een objectobj.delete () # Getobj1, obj2 = bar.batched_get () Vereisten: · Python
stockpyle Gerelateerde software