דוגמאות ל-Memcache

בדף הזה מופיעות דוגמאות קוד ב- קוד Python לשימוש ב-Memcache. Memcache היא מערכת מטמון מבוזרת של אובייקטים בזיכרון, עם ביצועים גבוהים, שמאפשרת גישה מהירה לנתונים שנשמרו במטמון. מידע נוסף על Memcache זמין במאמר סקירה כללית על Memcache.

התבנית memcache

בדרך כלל משתמשים ב-Memcache עם התבנית הבאה:

  • האפליקציה מקבלת שאילתה מהמשתמש או מהאפליקציה.
  • האפליקציה בודקת אם הנתונים שנדרשים כדי לענות על השאילתה נמצאים ב-memcache.
    • אם הנתונים נמצאים ב-memcache, האפליקציה משתמשת בהם.
    • אם הנתונים לא נמצאים ב-memcache, האפליקציה שולחת שאילתה למאגר הנתונים ומאחסנת את התוצאות ב-memcache לבקשות עתידיות.

הקוד הבא להדגמה מייצג בקשת memcache אופיינית:

def get_data():
    data = memcache.get('key')
    if data is not None:
        return data
    else:
        data = query_for_data()
        memcache.add('key', data, 60)
    return data

ndb משתמשת באופן פנימי ב-memcache כדי להאיץ את השאילתות. עם זאת, אם רוצים, אפשר גם להוסיף במפורש קריאות ל-memcache כדי לקבל יותר שליטה על ההאצות.

שמירת נתונים במטמון

בדוגמה הבאה מוצגות כמה דרכים להגדיר ערכים ב-Memcache באמצעות API בשפת Python.

# Add a value if it doesn't exist in the cache
# with a cache expiration of 1 hour.
memcache.add(key="weather_USA_98105", value="raining", time=3600)

# Set several values, overwriting any existing values for these keys.
memcache.set_multi(
    {"USA_98115": "cloudy", "USA_94105": "foggy", "USA_94043": "sunny"},
    key_prefix="weather_",
    time=3600
)

# Atomically increment an integer value.
memcache.set(key="counter", value=0)
memcache.incr("counter")
memcache.incr("counter")
memcache.incr("counter")

מידע נוסף על השיטות add(),‏ set_multi() ו-set() זמין במאמרי העזרה של ה-API של memcache בשפת Python.