ObjectLru캐시
LruCache(Least Recent Used Cache)는 LRU 캐시를 유지하는 데 사용되는 클래스입니다. 일정 개수의 값을 저장하고 컨테이너의 크기를 유지할 수 있습니다. 새로운 데이터가 들어올 때 컨테이너가 크기 제한에 도달하지 않은 경우 새 데이터를 컨테이너에 직접 추가할 수 있습니다. 컨테이너가 가득 차면 컨테이너는 최근에 가장 적게 사용된 데이터를 제거합니다.
다음과 같은 방법으로 사용할 수 있습니다.
1
2const util = require('util')
const c = new util.LruCache(10, 100) // create a LruCache instance with size 10 and timeout 100ms
그 중 set()은 키-값 쌍을 설정하는 인터페이스입니다.
1LruCache.set(String name, Value value);
name 매개변수는 설정할 키 값을 지정하고, value 매개변수는 설정할 값을 지정합니다.
LruCache
이 get
메서드는 콜백 함수를 사용하여 캐시된 데이터를 업데이트할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15var c = new util.LruCache(10, 1000); // create a LruCache instance with size 10 and timeout 1000ms
function get_data(name) {
// return data from backend
// ...
var data = {
'name': name,
'value': Math.random()
};
console.log('update data: ' + JSON.stringify(data)); // output infomation to console
return data;
}
console.log(c.get('a', get_data));
console.log(c.get('a', get_data));
결과:
1
2
3update data: {"name":"a","value":0.4019124971556616}
{"name":"a","value":0.4019124971556616} // updater will be called to update cache data when cache is empty
{"name":"a","value":0.4019124971556616} // updater will not be called when cache is not empty
특히 LruCache를 사용하는 경우 개발자는 다음 모범 사례를 따르는 것이 좋습니다.
- LruCache를 사용하면 백엔드 데이터 처리 중 특정 시점을 새로운 시점으로 사용하고 만료 시간을 설정하여 애플리케이션 성능을 최적화할 수 있습니다.
- 해당 시나리오에 따라 비즈니스 결정을 분석합니다. 예를 들어, 더 자주 업데이트되는 데이터는 더 짧은 만료 시간으로 구성되어야 하며, 덜 자주 업데이트되는 캐시된 데이터는 너무 짧은 만료 시간을 설정할 필요가 없습니다.
- 다양한 사용 시나리오에서는 다양한 데이터 액세스 모드를 고려하고 적절한 LruCache 클래스 인스턴스를 사용하세요.
상속관계
건설자
LruCache
LruCache 객체 생성자
1
2new LruCache(Integer size,
Integer timeout = 0);
호출 매개변수:
- size: 정수, 최대 캐시 크기
- timeout: 정수, 요소 만료 시간, 단위는 ms이며, 0보다 작거나 같으면 만료되지 않으며 기본값은 0입니다.
정적 속성
defaultMaxListeners
정수, 기본 전역 최대 리스너 수
1static Integer LruCache.defaultMaxListeners;
구성원 속성
size
정수, 컨테이너에 있는 값의 개수를 쿼리합니다.
1readonly Integer LruCache.size;
timeout
정수, 쿼리 및 컨테이너 요소의 만료 시간을 설정합니다. 단위는 ms이며, 0보다 작거나 같으면 만료되지 않습니다.
1Integer LruCache.timeout;
onexpire
함수, 쿼리 및 바인드 데이터 시간 초과 이벤트. on("expire", func);
1Function LruCache.onexpire;
멤버 함수
clear
컨테이너 데이터 지우기
1LruCache.clear();
has
컨테이너에 지정된 키 값을 가진 데이터가 존재하는지 확인
1Boolean LruCache.has(String name);
호출 매개변수:
- name: 문자열, 확인할 키 값을 지정합니다.
결과 반환:
- Boolean, 키 값이 존재하는지 여부를 반환합니다.
get
지정된 키 값의 값을 쿼리합니다.
1Value LruCache.get(String name);
호출 매개변수:
- name: 문자열, 쿼리할 키 값을 지정합니다.
결과 반환:
- Value, 키 값에 해당하는 값을 반환하고, 존재하지 않으면 정의되지 않음을 반환합니다.
지정된 키 값의 값을 쿼리하고, 존재하지 않거나 만료된 경우 콜백 함수를 호출하여 데이터를 업데이트합니다.
1
2Value LruCache.get(String name,
Function updater);
호출 매개변수:
- name: 문자열, 쿼리할 키 값을 지정합니다.
- updater: 기능, 업데이트 기능을 지정합니다
결과 반환:
- Value, 키 값에 해당하는 값을 반환합니다.
set
키 값 데이터를 설정합니다. 키 값이 없으면 새 데이터를 삽입합니다.
1
2LruCache.set(String name,
Value value);
호출 매개변수:
- name: 문자열, 설정할 키 값을 지정합니다.
- value: 값, 설정할 데이터를 지정합니다.
키 값 데이터를 설정하고, 해당 키 값이 없으면 새로운 데이터를 삽입하세요.
1LruCache.set(Object map);
호출 매개변수:
- map: 객체, 설정할 키-값 데이터 사전을 지정합니다.
remove
지정된 키의 모든 값 삭제
1LruCache.remove(String name);
호출 매개변수:
- name: 문자열, 삭제할 키 값을 지정합니다.
isEmpty
컨테이너가 비어 있는지 확인
1Boolean LruCache.isEmpty();
결과 반환:
- Boolean, 컨테이너에 값이 없으면 true를 반환합니다.
on
이벤트 핸들러를 객체에 바인딩
1
2Object LruCache.on(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
이벤트 핸들러를 객체에 바인딩
1Object LruCache.on(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
addListener
이벤트 핸들러를 객체에 바인딩
1
2Object LruCache.addListener(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
이벤트 핸들러를 객체에 바인딩
1Object LruCache.addListener(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
prependListener
이벤트 핸들러를 객체의 원점에 바인딩
1
2Object LruCache.prependListener(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
이벤트 핸들러를 객체의 원점에 바인딩
1Object LruCache.prependListener(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
once
일회성 이벤트 핸들러를 객체에 바인딩합니다. 일회성 핸들러는 한 번만 트리거됩니다.
1
2Object LruCache.once(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
일회성 이벤트 핸들러를 객체에 바인딩합니다. 일회성 핸들러는 한 번만 트리거됩니다.
1Object LruCache.once(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
prependOnceListener
이벤트 핸들러를 객체의 원점에 바인딩
1
2Object LruCache.prependOnceListener(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
이벤트 핸들러를 객체의 원점에 바인딩
1Object LruCache.prependOnceListener(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
off
객체 처리 대기열에서 기능 할당 취소
1
2Object LruCache.off(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
객체 처리 대기열의 모든 기능 취소
1Object LruCache.off(String ev);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
객체 처리 대기열에서 기능 할당 취소
1Object LruCache.off(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름을 이벤트 이름으로 사용하고, 해당 속성의 값을 이벤트 처리 함수로 사용합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
removeListener
객체 처리 대기열에서 기능 할당 취소
1
2Object LruCache.removeListener(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
객체 처리 대기열의 모든 기능 취소
1Object LruCache.removeListener(String ev);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
객체 처리 대기열에서 기능 할당 취소
1Object LruCache.removeListener(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름을 이벤트 이름으로 사용하고, 해당 속성의 값을 이벤트 처리 함수로 사용합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
removeAllListeners
객체의 처리 대기열에서 모든 이벤트에 대한 모든 리스너를 취소합니다. 이벤트가 지정된 경우 지정된 이벤트에 대한 모든 리스너를 제거합니다.
1Object LruCache.removeAllListeners(String ev);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
객체의 처리 대기열에서 모든 이벤트에 대한 모든 리스너를 취소합니다. 이벤트가 지정된 경우 지정된 이벤트에 대한 모든 리스너를 제거합니다.
1Object LruCache.removeAllListeners(Array evs = []);
호출 매개변수:
- evs: 배열, 이벤트 이름 지정
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
setMaxListeners
호환성만을 위한 리스너 수의 기본 제한
1LruCache.setMaxListeners(Integer n);
호출 매개변수:
- n: 정수, 이벤트 수를 지정합니다.
getMaxListeners
호환성만을 위해 기본 제한 수의 리스너를 가져옵니다.
1Integer LruCache.getMaxListeners();
결과 반환:
- Integer, 기본 제한 수량을 반환합니다.
listeners
객체의 지정된 이벤트에 대한 리스너 배열을 쿼리합니다.
1Array LruCache.listeners(String ev);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
결과 반환:
- Array, 지정된 이벤트에 대한 리스너 배열을 반환합니다.
listenerCount
객체의 지정된 이벤트에 대한 리스너 수를 쿼리합니다.
1Integer LruCache.listenerCount(String ev);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
결과 반환:
- Integer, 지정된 이벤트에 대한 리스너 수를 반환합니다.
객체의 지정된 이벤트에 대한 리스너 수를 쿼리합니다.
1
2Integer LruCache.listenerCount(Value o,
String ev);
호출 매개변수:
- o: 값, 쿼리 개체를 지정합니다.
- ev: 문자열, 이벤트 이름을 지정합니다.
결과 반환:
- Integer, 지정된 이벤트에 대한 리스너 수를 반환합니다.
eventNames
쿼리 리스너 이벤트 이름
1Array LruCache.eventNames();
결과 반환:
- Array, 이벤트 이름의 배열을 반환합니다.
emit
이벤트를 적극적으로 트리거
1
2Boolean LruCache.emit(String ev,
...args);
호출 매개변수:
- ev: 문자열, 이벤트 이름
- args: ..., 이벤트 매개변수가 이벤트 처리 함수에 전달됩니다.
결과 반환:
- Boolean, 이벤트 트리거 상태를 반환하고, 응답 이벤트가 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
toString
객체의 문자열 표현을 반환하며 일반적으로 "[Native Object]"를 반환하며 객체 자체의 특성에 따라 다시 구현될 수 있습니다.
1String LruCache.toString();
결과 반환:
- String, 객체의 문자열 표현을 반환합니다.
toJSON
객체의 JSON 형식 표현을 반환하며 일반적으로 객체에 의해 정의된 읽을 수 있는 속성 컬렉션을 반환합니다.
1Value LruCache.toJSON(String key = "");
호출 매개변수:
- key: 문자열, 사용되지 않음
결과 반환:
- Value, 직렬화 가능한 JSON을 포함하는 값을 반환합니다.