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. Parameeter võti on 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). Parameeter pakkimine on teiste programmidega ühilduvuse tagamiseks ning selle väärtuse võib jätta määramata. nimeruum on tekstikujuline identifikaator nimeruumi määramiseks, mille sees väärtused asuvad. Juhul kui väärtus on puhvris juba olemas, kirjutab set selle ü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äärtuseks Null
  • memcache.delete(võti[, lukusta=0 [, nimeruum=None]]) kustutab väärtuse puhvrist. Valikuline parameeter lukusta võimaldab seada aega, mille jooksul ei ole võimalik add meetodiga sama võtmega väärtust puhvrisse lisada.
  • add(võti, väärtus [, kehtivusaeg=0 [, pakkimine=0 [, nimeruum=None]]]) - lisab sarnaselt meetodile get vää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.