*

専用Memcacheは共有Memcacheよりも本当に性能が高いのか検証する Part2

公開日: : 投稿者: GAE

前回のGAEの「専用Memcacheは共有Memcacheよりも本当に性能が高いのか検証する」が投稿されてからだいぶ時間が経ってしまいましたが、今回はその第二弾です。

前回は「保存容量、読込・書込速度」に観点を置いて調べましたが、今回は「データの残存期間」について違いがあるのかどうかを調べてみました。

※専用Memcache、共有Memcacheの説明や設定方法などは前回冒頭で触れていますので、今回は触れません。

 

1. フラッシュのタイミング

前回の記事でも少し触れていますが、Memcacheは専用、共有のどちらも永続性やSLAの保証はありませんので、「いつ」という明確なタイミングはわかりません。

※参考URL: https://cloud.google.com/appengine/docs/adminconsole/memcache

 

明確なタイミングはわからないと前述しましたが、GAE/JのMemcacheServiceではキャッシュ時に有効期限を指定することができます。

※有効期限を指定しても期限内にキャッシュがフラッシュされることはあります。

参考URL: https://cloud.google.com/appengine/docs/java/memcache/#Java_How_cached_data_expires

有効期限の指定方法は下記の3つがあります。

  1. キャッシュ時からの有効期限をミリ秒単位で指定する
  2. キャッシュ時からの有効期限を秒単位で指定する
  3. キャッシュの有効期限を日時で指定する

※参考URL: https://cloud.google.com/appengine/docs/java/javadoc/com/google/appengine/api/memcache/MemcacheService#put(java.lang.Object, java.lang.Object, com.google.appengine.api.memcache.Expiration)

 

2. データの残存期間検証

2.1 検証方法

有効期限を指定しないデータと指定したデータの2種類をキャッシュし、

毎分cronでMemcacheの残存内容をメールする。

有効期限は、1分、5分、1時間、10時間、24時間、36時間を設定しました。

 

2.2 共有Memcacheの残存期間検証結果

  • キャッシュ日時: 2014/09/24 16:50:35
  • 初回cron実行日時: 2014/09/24 16:52:36
有効期限 削除確認経過時間 削除確認日時
1分 2分 2014/09/24 16:52
5分 5分 2014/09/24 16:55
1時間 1時間 2014/09/24 17:50
10時間 10時間 2014/09/25 02:50
24時間 17時間9分 2014/09/25 09:59
36時間 17時間18分 2014/09/25 10:08
指定なし 17時間18分 2014/09/25 10:08

有効期限1分〜10時間までは有効期限まで残存していましたが、

有効期限1日、1.5日、指定なしはキャッシュから約17時間でキャッシュが

削除されてしまいました。

有効期限1.5日と指定なしのキャッシュが同時刻で削除されているので、

たぶんインフラ側で何かしらの理由でキャッシュのフラッシュが実行された

のでしょう。

今回の共有Memcacheの有効期限は現状最大約17時間、ということが言えますね。

 

2.3 専用Memcacheの残存期間検証結果

  • キャッシュ日時: 2014/09/24 16:40:48
  • 初回cron実行日時: 2014/09/24 16:42:56
有効期限 削除確認経過時間 削除確認日時
1分 2分 2014/09/24 16:42
5分 5分 2014/09/24 16:46
1時間 1時間 2014/09/24 17:41
10時間 10時間 2014/09/25 02:40
24時間 24時間 2014/09/25 16:41
36時間 36時間 2014/09/26 04:41
指定なし 56時間36分 2014/09/27 01:16

有効期限を指定した場合は、全てその時間まで残りました。

有効期限を指定しないものに関しては、56時間36分も残存しました。

ですが、インフラ側の何かしらの事情で消されたのか、何かしらの有効期限で

消えたのか、詳しいことは不明ですね。

ただ、明らかに共有Memcacheよりは長く保持されそう、ということは分かりました。

 

3. まとめ

以上の検証結果より、残存期間でも専用Memcacheは従来の共有Memcacheよりも

圧倒的に長い時間保持できることが分かりました。

しかし、長い時間データを保持してくれることは分かりましが、最初に触れた通り、

専用Memcacheであってもいつ突然キャッシュがクリアされるか分かりません。

そのことを踏まえると、専用Memcacheの1GB毎にかかる毎月$86.4の課金は少し

割高に感じてしまうかも知れません。

ですが、頻繁にDatastoreへのアクセスがあり、スピーディにデータを取得したいシステムの場合は、大変活躍するAPIになることでしょう。

関連記事

Prediction API入門(後編)

今回はPrediction API on GAE/J みなさん、こんにちは。Prediction

記事を読む

GAE/GOでTwitter Botを作ってみる~前編~

TwitterやFacebookのような有名サービスと連携したアプリを開発する場合、開発者は

記事を読む

AppEngineでTwilioを試してみた(基本編)

AppEngineでTwilioを試してみた(基本編) AppEngineでTwilioを試し

記事を読む

Search API詳細解説 Part1「Search API 概要説明」

Google App Engine(以降GAE)に全文検索サービスであるSearch APIが正式リ

記事を読む

GAE負荷テスト その2「無料で何PVまで表示できるのか試してみた」

その1のアップからだいぶ日が経ってしまい、いつの間にか年すら変わっていましたね。。。 " GA

記事を読む

Search API詳細解説 Part3「Search APIの使い方 検索編」

Search API詳細解説シリーズ タイトル Part1Search API 概要説明

記事を読む

GCEにPuttyから簡単接続する

年末ではありますが、先日ちょっとGCE(Google Compute Engine)を触る機会がまた

記事を読む

GAEでよくあるエラーの発生原因と対策1

GAE上で動くWebアプリケーションに特有の例外について、弊社での運用の事例からいくつか特徴的なもの

記事を読む

Google App Engine Modules のScalingを試す

みなさんこんにちは。 前回の記事では、GAE Modulesの簡単なサンプルを配備し、動作を確

記事を読む

Search API詳細解説 Part2「Search APIの使い方 登録・削除編」

Search API詳細解説シリーズ タイトル Part1Search API 概要説明

記事を読む

PAGE TOP ↑