Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cache Stampede をセマフォで対策する

Avatar for najeira najeira
September 27, 2016

Cache Stampede をセマフォで対策する

Avatar for najeira

najeira

September 27, 2016
Tweet

More Decks by najeira

Other Decks in Programming

Transcript

  1. 典型的な使い方 # キャッシュからデータを取得する data = get_cache(key) if not data: #

    キャッシュがなければデータベースから取得する data = get_data_from_database(...) # 新しいデータをキャッシュに保存する set_cache(key, data, ttl=60) # ユーザーにレスポンスを返す send_response(data)
  2. コードで見ると data = memcache.get(key_for_data) if not data: memcache.add(key_for_semaphore, 1, ttl=60)

    data = get_data_from_database(...) #データベースから取得 memcache.set(key_for_data, data, ttl=120) # キャッシュを保存 else: #セマフォの獲得を試みる ret = memcache.add(key_for_semaphore, 1, ttl=60) if ret: # セマフォを獲得した場合は新しいキャッシュを作る data = get_data_from_database(...) memcache.set(key_for_data, data, ttl=120) return data