1. 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)
주요 설명
FlushAll():Memcached 서버의 모든 키를 지우므로 신중하게 사용하세요!
- 운영 환경에서 호출 금지, 모든 업무 캐시가 전부 삭제됨;
- 기존 데이터만 무효화하고 메모리를 회수하지 않습니다(Memcached 지연 정리).
2. 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) | 불리언 값으로 키 존재 여부 판단;두 가지 null 케이스를 정확히 구분 | 캐시 히트 여부 판단이 필요한 업무에서 권장 |
제네릭 버전도 지원:mClient.TryGet<T>(key, out T value)
유의사항
FlushAll()는 서버 측 명령어입니다. 클러스터 배포 시 기본적으로모든 노드 데이터를 삭제;- Memcached는 영속 기능이 없어 서비스 재시작 시 모든 데이터가 유실;
- 캐시 관통 방지 판단에
TryGet을 우선 사용해 데이터베이스로 과도한 요청이 들어가는 것을 막으세요.
기타 동작
Previous: 객체 저장