其餘操作

一、FlushAll() 清空快取

mClient.Store(StoreMode.Set, "key1", 1234L);
Console.Write(mClient.Get("key1")); // 正常讀取 1234
mClient.FlushAll();
Console.Write(mClient.Get("key1")); // 輸出 nullCode language: JavaScript (javascript)
重點說明
  1. FlushAll()清除 Memcached 伺服器上全部 Key,務必謹慎使用!
  • 正式環境禁止呼叫,會刪除全部業務快取資料;
  • 僅讓既有資料失效,不會釋放記憶體(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 維持 nullCode language: JavaScript (javascript)

Get() 與 TryGet() 比較

方式特性適用場景
mClient.Get(key)Key 不存在回傳 null;無法分辨「快取值本身就是 null」和「Key 不存在」兩種狀況簡單讀取,不在意索引是否存在
mClient.TryGet(key, out obj)透過布林回傳值判斷 Key 是否存在;精準區分兩種 null 情境業務需要判斷快取是否命中,建議優先採用

同樣支援泛型寫法:mClient.TryGet<T>(key, out T value)

注意事項

  • FlushAll() 屬於伺服器端指令,叢集部署預設會清空全部節點的資料;
  • Memcached 沒有持久化機制,服務重啟所有資料直接遺失;
  • 建議使用 TryGet 做快取穿透防護,避免大量請求直接打向資料庫。

其餘操作

Previous:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *