https://developers.google.com/appengine/docs/python/memcache/usingmemcache이것은 db query 를 자주 사용해서 생기게 되는 lack 에 대한 방지 대책이라고 볼 수 있겠다.
이것은 하나의 저장공간(memory 또는 varialbe) 정도로 생각하면 될 듯 하다. 그래서 variable 를 정의와 사용방법만 알면 쓰는데에 큰 문제는 없을 듯 하다.
사용방법
add() 또는 set_multi() 로 값을 set 할 수 있다.gets() 로 원하는 key 값을 가져올 수 있다.
memcache.set_multi({ "melon": mc, "billboard": bc}, key_prefix="chart_", time=3600*24*7) client = memcache.Client() value = client.gets('chart_melon') # OR client.get(key, for_cas=True)
memcache 소스 경로
memcache 의 소스는 아래 경로에서 찾아볼 수 있다.
c:\Program Files\Google\google_appengine\google\appengine\api\memcache
limit
- maximum size of chached data : 1MB - key size - 구현과 관련된 overhead(약 96 byte)
- key 사이즈는 250 bytes 이하 : 키(key) 는 250 bytes 이하여야 한다. python 에서는 250 bytes 를 넘는 string 들은 hased 된다. (runtime 마다 다르다.)
- 32MB : "multi" 라 부르는 batch 작업들에서 개수의 제한은 없다. 하지만 총 call 이나 fetched data 의 양이 32MB 를 넘지 말아야 한다.
Django 에서 memcache
# Corresponding Django view, "django-guestbook/guestbook/views.py" from django.core.cache import cachefrom django.views.generic.simple import direct_to_templatefrom guestbook.forms import CreateGreetingForm from guestbook.models import Greeting def list_greetings(request): greetings = cache.get(MEMCACHE_GREETINGS) if greetings is None: greetings = Greeting.objects.all().order_by('-date')[:10] cache.add(MEMCACHE_GREETINGS, greetings) return direct_to_template(request, 'guestbook/index.html', {'greetings': greetings, 'form': CreateGreetingForm()})google app engine 에서 Django framework 를 사용할 때 google app engine 의 memcache API 를 쓰지 않고 Django 의 cache 를 사용하고 있다. 이 방법이 platform-independent 해서 사용했다고 한다.[3][4]
References
- Using Memcache - Google App Engine — Google Developers
- Google App Engine — Google Developers
- https://developers.google.com/appengine/articles/django-nonrel
- https://docs.djangoproject.com/en/dev/topics/cache/
댓글 없음:
댓글 쓰기