その他の操作

一、FlushAll() キャッシュ全削除

mClient.Store(StoreMode.Set, "key1", 1234L);
Console.Write(mClient.Get("key1")); // 1234 を正常取得
mClient.FlushAll();
Console.Write(mClient.Get("key1")); // null が出力Code language: JavaScript (javascript)
主なポイント
  1. FlushAll()Memcachedサーバー上の全キーを削除します。取り扱いに十分注意してください!
  • 本番環境では実行禁止。業務キャッシュがすべて消えてしまいます;
  • 既存データを無効化するだけでメモリ解放は行われません(Memcachedの遅延解放)。

二、TryGet による安全なキャッシュ取得

object obj = null;
var isSuc = mClient.TryGet("key1", out obj );
// キー存在時:isSuc=true、obj =1234

isSuc = mClient.TryGet("key1", out obj );
// キー不在時:isSuc=false、obj はnullのままCode language: JavaScript (javascript)

Get() と TryGet() の比較

メソッド特徴利用シーン
mClient.Get(key)キーがない場合nullを返す。「キャッシュ値自体がnull」と「キーが存在しない」を区別できない単純な読み込みでキーの有無を気にしない場合
mClient.TryGet(key, out obj)真偽値でキーの存在を判定。2種類のnull状況を正確に判別可能キャッシュヒット判定が必要な業務で推奨

ジェネリック版も利用可:mClient.TryGet<T>(key, out T value)

注意点

  • FlushAll()はサーバー側コマンド。クラスタ構成時は既定で全ノードのデータを消去します;
  • Memcachedは永続化に対応しておらず、サービス再起動でデータはすべて喪失;
  • キャッシュ貫通対策として TryGet を優先し、データベースへの大量アクセスを抑えてください。

その他の操作

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です