其他操作

一、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 );
// 存在key:isSuc=true,obj =1234

isSuc = mClient.TryGet("key1", out obj );
// key不存在: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:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注