一、FlushAll() 清空缓存
mClient.Store(StoreMode.Set, "key1", 1234L);
Console.Write(mClient.Get("key1")); // 正常获取 1234
mClient.FlushAll();
Console.Write(mClient.Get("key1")); // 输出 nullCode language: JavaScript (javascript)
关键说明
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: 对象存储