Andrise programmeerimisalane WIKI
Memcache
Memcached on andmete puhverdamise süsteem, mis pakub võimalust hoida aplikatsioonidel puhverdatavaid andmeid sessioonide vahel mälus. Näiteks kui laetakse andmebaasist mingeid andmeid, siis on mugav säilitada neid järgmiste lehe vaatajate jaoks juba mälus - nii pole vaja kalleid andmebaasipäringuid nende andmete kehtivusaja jooksul teha.
Google App Engine kasutab modifitseeritud Memcached versiooni nimega Memcache. Selle kasutamiseks tuleb sisse laadida memcache teek.
from google.appengine.api import memcache
Memcache puhvrisse saab panna kiireks laadimiseks suvalisi objekte, sealhulgas ka näiteks andmebaasi päringuobjekte.
sisu = memcache.get("sisu") if sisu is None: sisu = Tekstid.get_by_key_name("sisu") memcache.set("sisu", sisu)
Näiteprogrammis üritatakse memcache puhvrist laadida objekti nimega sisu. Juhul kui see ei õnnestu, laetakse vastav objekt andmebaasist ning lisatakse järgmise korra jaoks memcache puhvrisse. Järgmisel laadimisel on objekt juba puhvris olemas ja andmebaasist seda laadida pole vaja.
Memcache sisaldab järgmiseid meetodeid puhvriga ringikäimiseks
memcache.set(võti, väärtus [, kehtivusaeg=0 [, pakkimine=0 [, nimeruum=None]]])- funktsioon sisestab puhvrisse väärtuse. Parameetervõtion tekstikujuline identifikaator, mis peab olema omas nimeruumis unikaalne. Väärtus on suvaline objekt, maksimaalse suurusega kuni 1 MB. Kehtivusaeg on kas sekundid alates praegusest hetkest või kindla hetke ajatempel (kui on määramata, kehtib puhvri tühjendamiseni). Parameeterpakkimineon teiste programmidega ühilduvuse tagamiseks ning selle väärtuse võib jätta määramata.nimeruumon tekstikujuline identifikaator nimeruumi määramiseks, mille sees väärtused asuvad. Juhul kui väärtus on puhvris juba olemas, kirjutabsetselle üle.memcache.get(võti[,nimeruum=None])- pärib väärtuse puhvrist võtme ning nimeruumi järgi. Juhul kui väärtust ei leita, on tagastusväärtuseksNullmemcache.delete(võti[, lukusta=0 [, nimeruum=None]])kustutab väärtuse puhvrist. Valikuline parameeterlukustavõimaldab seada aega, mille jooksul ei ole võimalikaddmeetodiga sama võtmega väärtust puhvrisse lisada.add(võti, väärtus [, kehtivusaeg=0 [, pakkimine=0 [, nimeruum=None]]])- lisab sarnaselt meetodilegetväärtuse puhvrisse, kuid seda ainult juhul kui sellise võtmega väärtust samas nimeruumis veel ei eksisteeri või kui see võti pole kustutamisel lukustatud.flush_all()- tühjendab kogu puhvri
Kõikide võimalike memcache operatsioonide kohta saab lugeda Google App Engine dokumentatsioonist.