ОбъектLruCache
LruCache (наименее недавно используемый кэш) — это класс, используемый для поддержания кэша 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: целое число, время истечения срока действия элемента, единица измерения — мс, если оно меньше или равно 0, срок действия не истекает. Значение по умолчанию — 0.
статические свойства
defaultMaxListeners
Целое число, глобальное максимальное количество слушателей по умолчанию.
1static Integer LruCache.defaultMaxListeners;
свойства члена
size
Целое число, запрос количества значений в контейнере
1readonly Integer LruCache.size;
timeout
Целое число, запросите и установите время истечения срока действия элементов в контейнере, единица измерения — мс, если оно меньше или равно 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, возвращает сам объект события для облегчения цепных вызовов
addListener
Привязать обработчик событий к объекту
1
2Object LruCache.addListener(String ev,
Function func);
Параметры звонка:
- ev: строка, указывает название события.
- func: Функция, укажите функцию обработки событий.
Результаты возврата:
- Object, возвращает сам объект события для облегчения цепных вызовов
Привязать обработчик событий к объекту
1Object LruCache.addListener(Object map);
Параметры звонка:
- map: Объект, определяет связь сопоставления событий, имя атрибута объекта будет использоваться в качестве имени события, а значение атрибута будет использоваться в качестве функции обработки событий.
Результаты возврата:
- Object, возвращает сам объект события для облегчения цепных вызовов
prependListener
Привяжите обработчик событий к источнику объекта
1
2Object LruCache.prependListener(String ev,
Function func);
Параметры звонка:
- ev: строка, указывает название события.
- func: Функция, укажите функцию обработки событий.
Результаты возврата:
- Object, возвращает сам объект события для облегчения цепных вызовов
Привяжите обработчик событий к источнику объекта
1Object LruCache.prependListener(Object map);
Параметры звонка:
- map: Объект, определяет связь сопоставления событий, имя атрибута объекта будет использоваться в качестве имени события, а значение атрибута будет использоваться в качестве функции обработки событий.
Результаты возврата:
- Object, возвращает сам объект события для облегчения цепных вызовов
once
Привяжите к объекту одноразовый обработчик событий. Одноразовый обработчик будет срабатывать только один раз.
1
2Object LruCache.once(String ev,
Function func);
Параметры звонка:
- ev: строка, указывает название события.
- func: Функция, укажите функцию обработки событий.
Результаты возврата:
- Object, возвращает сам объект события для облегчения цепных вызовов
Привяжите к объекту одноразовый обработчик событий. Одноразовый обработчик будет срабатывать только один раз.
1Object LruCache.once(Object map);
Параметры звонка:
- map: Объект, определяет связь сопоставления событий, имя атрибута объекта будет использоваться в качестве имени события, а значение атрибута будет использоваться в качестве функции обработки событий.
Результаты возврата:
- Object, возвращает сам объект события для облегчения цепных вызовов
prependOnceListener
Привяжите обработчик событий к источнику объекта
1
2Object LruCache.prependOnceListener(String ev,
Function func);
Параметры звонка:
- ev: строка, указывает название события.
- func: Функция, укажите функцию обработки событий.
Результаты возврата:
- Object, возвращает сам объект события для облегчения цепных вызовов
Привяжите обработчик событий к источнику объекта
1Object LruCache.prependOnceListener(Object map);
Параметры звонка:
- map: Объект, определяет связь сопоставления событий, имя атрибута объекта будет использоваться в качестве имени события, а значение атрибута будет использоваться в качестве функции обработки событий.
Результаты возврата:
- 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, возвращает сам объект события для облегчения цепных вызовов
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, возвращает сам объект события для облегчения цепных вызовов
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