ObjetoLruCache
LruCache (caché menos utilizada recientemente) es una clase que se utiliza para mantener la caché LRU. Puede almacenar una cierta cantidad de valores y mantener el tamaño del contenedor. Cuando llegan nuevos datos, si el contenedor no ha alcanzado el límite de tamaño, los nuevos datos se pueden agregar directamente al contenedor. Si el contenedor está lleno, el contenedor desalojará los datos utilizados menos recientemente.
Podemos usarlo de las siguientes maneras:
1
2const util = require('util')
const c = new util.LruCache(10, 100) // create a LruCache instance with size 10 and timeout 100ms
Entre ellos, set() es la interfaz para configurar pares clave-valor:
1LruCache.set(String name, Value value);
El parámetro de nombre especifica el valor clave que se establecerá y el parámetro de valor especifica el valor que se establecerá.
LruCache
El get
método puede actualizar los datos almacenados en caché mediante una función de devolución de llamada:
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));
Resultados de:
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
Al utilizar LruCache específicamente, se recomienda a los desarrolladores seguir las siguientes mejores prácticas:
- Puede utilizar LruCache para optimizar el rendimiento de la aplicación utilizando un punto de tiempo específico como punto nuevo durante el procesamiento de datos de back-end y estableciendo el tiempo de caducidad.
- Analizar decisiones de negocio bajo los escenarios correspondientes. Por ejemplo, las actualizaciones de datos más frecuentes deben configurarse con un tiempo de vencimiento más corto, mientras que los datos almacenados en caché que se actualizan con menos frecuencia no necesitan establecer un tiempo de vencimiento demasiado corto.
- En diferentes escenarios de uso, considere diferentes modos de acceso a datos y utilice instancias de clase LruCache apropiadas.
relación de herencia
Constructor
LruCache
Constructor de objetos LruCache
1
2new LruCache(Integer size,
Integer timeout = 0);
Parámetros de llamada:
- size: Entero, tamaño máximo de caché
- timeout: Entero, tiempo de caducidad del elemento, la unidad es ms, si es menor o igual a 0, no caducará, el valor predeterminado es 0.
propiedades estáticas
defaultMaxListeners
Entero, el número máximo global predeterminado de oyentes
1static Integer LruCache.defaultMaxListeners;
propiedades de miembros
size
Entero, consulta el número de valores en el contenedor.
1readonly Integer LruCache.size;
timeout
Entero, consulta y establece el tiempo de vencimiento de los elementos en el contenedor, la unidad es ms, si es menor o igual a 0, no caducará.
1Integer LruCache.timeout;
onexpire
Función, consulta y vincula eventos de tiempo de espera de datos, equivalente a on("expire", func);
1Function LruCache.onexpire;
función miembro
clear
Borrar datos del contenedor
1LruCache.clear();
has
Compruebe si los datos con el valor clave especificado existen en el contenedor
1Boolean LruCache.has(String name);
Parámetros de llamada:
- name: Cadena, especifica el valor clave que se va a comprobar
Resultados de devolución:
- Boolean, devuelve si el valor clave existe
get
Consultar el valor del valor clave especificado.
1Value LruCache.get(String name);
Parámetros de llamada:
- name: Cadena, especifique el valor clave que se consultará
Resultados de devolución:
- Value, devuelve el valor correspondiente al valor clave, si no existe, devuelve indefinido
Consulta el valor del valor clave especificado. Si no existe o caduca, llama a la función de devolución de llamada para actualizar los datos.
1
2Value LruCache.get(String name,
Function updater);
Parámetros de llamada:
- name: Cadena, especifique el valor clave que se consultará
- updater: Función, especifique la función de actualización
Resultados de devolución:
- Value, devuelve el valor correspondiente al valor clave
set
Establezca un dato de valor clave. Si el valor clave no existe, inserte un nuevo dato.
1
2LruCache.set(String name,
Value value);
Parámetros de llamada:
- name: Cadena, especifique el valor clave que se establecerá
- value: Valor, especifique los datos que se establecerán
Establezca datos de valor clave. Si el valor clave no existe, inserte datos nuevos.
1LruCache.set(Object map);
Parámetros de llamada:
- map: Objeto, especifica el diccionario de datos clave-valor que se configurará
remove
Eliminar todos los valores de la clave especificada
1LruCache.remove(String name);
Parámetros de llamada:
- name: Cadena, especifica el valor clave que se eliminará
isEmpty
Comprobar si el contenedor está vacío
1Boolean LruCache.isEmpty();
Resultados de devolución:
- Boolean, devuelve verdadero si no hay ningún valor en el contenedor
on
Vincular un controlador de eventos al objeto
1
2Object LruCache.on(String ev,
Function func);
Parámetros de llamada:
- ev: Cadena, especifica el nombre del evento.
- func: Función, especifique la función de procesamiento de eventos
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
Vincular un controlador de eventos al objeto
1Object LruCache.on(Object map);
Parámetros de llamada:
- map: Objeto, especifica la relación de mapeo de eventos, el nombre del atributo del objeto se usará como nombre del evento y el valor del atributo se usará como función de procesamiento de eventos.
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
addListener
Vincular un controlador de eventos al objeto
1
2Object LruCache.addListener(String ev,
Function func);
Parámetros de llamada:
- ev: Cadena, especifica el nombre del evento.
- func: Función, especifique la función de procesamiento de eventos
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
Vincular un controlador de eventos al objeto
1Object LruCache.addListener(Object map);
Parámetros de llamada:
- map: Objeto, especifica la relación de mapeo de eventos, el nombre del atributo del objeto se usará como nombre del evento y el valor del atributo se usará como función de procesamiento de eventos.
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
prependListener
Vincular un controlador de eventos al origen del objeto
1
2Object LruCache.prependListener(String ev,
Function func);
Parámetros de llamada:
- ev: Cadena, especifica el nombre del evento.
- func: Función, especifique la función de procesamiento de eventos
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
Vincular un controlador de eventos al origen del objeto
1Object LruCache.prependListener(Object map);
Parámetros de llamada:
- map: Objeto, especifica la relación de mapeo de eventos, el nombre del atributo del objeto se usará como nombre del evento y el valor del atributo se usará como función de procesamiento de eventos.
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
once
Vincula un controlador de eventos de una sola vez al objeto. El controlador de eventos de una sola vez solo se activará una vez.
1
2Object LruCache.once(String ev,
Function func);
Parámetros de llamada:
- ev: Cadena, especifica el nombre del evento.
- func: Función, especifique la función de procesamiento de eventos
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
Vincula un controlador de eventos de una sola vez al objeto. El controlador de eventos de una sola vez solo se activará una vez.
1Object LruCache.once(Object map);
Parámetros de llamada:
- map: Objeto, especifica la relación de mapeo de eventos, el nombre del atributo del objeto se usará como nombre del evento y el valor del atributo se usará como función de procesamiento de eventos.
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
prependOnceListener
Vincular un controlador de eventos al origen del objeto
1
2Object LruCache.prependOnceListener(String ev,
Function func);
Parámetros de llamada:
- ev: Cadena, especifica el nombre del evento.
- func: Función, especifique la función de procesamiento de eventos
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
Vincular un controlador de eventos al origen del objeto
1Object LruCache.prependOnceListener(Object map);
Parámetros de llamada:
- map: Objeto, especifica la relación de mapeo de eventos, el nombre del atributo del objeto se usará como nombre del evento y el valor del atributo se usará como función de procesamiento de eventos.
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
off
Desasignar una función de la cola de procesamiento de objetos
1
2Object LruCache.off(String ev,
Function func);
Parámetros de llamada:
- ev: Cadena, especifica el nombre del evento.
- func: Función, especifique la función de procesamiento de eventos
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
Cancelar todas las funciones en la cola de procesamiento de objetos
1Object LruCache.off(String ev);
Parámetros de llamada:
- ev: Cadena, especifica el nombre del evento.
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
Desasignar una función de la cola de procesamiento de objetos
1Object LruCache.off(Object map);
Parámetros de llamada:
- map: Objeto, especifica la relación de mapeo de eventos, el nombre del atributo del objeto se usa como nombre del evento y el valor del atributo se usa como función de procesamiento de eventos.
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
removeListener
Desasignar una función de la cola de procesamiento de objetos
1
2Object LruCache.removeListener(String ev,
Function func);
Parámetros de llamada:
- ev: Cadena, especifica el nombre del evento.
- func: Función, especifique la función de procesamiento de eventos
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
Cancelar todas las funciones en la cola de procesamiento de objetos
1Object LruCache.removeListener(String ev);
Parámetros de llamada:
- ev: Cadena, especifica el nombre del evento.
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
Desasignar una función de la cola de procesamiento de objetos
1Object LruCache.removeListener(Object map);
Parámetros de llamada:
- map: Objeto, especifica la relación de mapeo de eventos, el nombre del atributo del objeto se usa como nombre del evento y el valor del atributo se usa como función de procesamiento de eventos.
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
removeAllListeners
Cancela todos los oyentes de todos los eventos de la cola de procesamiento del objeto. Si se especifica un evento, elimina todos los oyentes del evento especificado.
1Object LruCache.removeAllListeners(String ev);
Parámetros de llamada:
- ev: Cadena, especifica el nombre del evento.
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
Cancela todos los oyentes de todos los eventos de la cola de procesamiento del objeto. Si se especifica un evento, elimina todos los oyentes del evento especificado.
1Object LruCache.removeAllListeners(Array evs = []);
Parámetros de llamada:
- evs: Matriz, especifique el nombre del evento
Resultados de devolución:
- Object, devuelve el objeto de evento en sí para facilitar las llamadas en cadena
setMaxListeners
El límite predeterminado en la cantidad de oyentes, solo por compatibilidad
1LruCache.setMaxListeners(Integer n);
Parámetros de llamada:
- n: Entero, especifica el número de eventos
getMaxListeners
Obtiene el número límite predeterminado de oyentes, solo por compatibilidad
1Integer LruCache.getMaxListeners();
Resultados de devolución:
- Integer, devuelve la cantidad límite predeterminada
listeners
Consultar la matriz de escucha para el evento especificado del objeto.
1Array LruCache.listeners(String ev);
Parámetros de llamada:
- ev: Cadena, especifica el nombre del evento.
Resultados de devolución:
- Array, devuelve la matriz de escucha para el evento especificado
listenerCount
Consultar el número de oyentes para el evento especificado del objeto.
1Integer LruCache.listenerCount(String ev);
Parámetros de llamada:
- ev: Cadena, especifica el nombre del evento.
Resultados de devolución:
- Integer, devuelve el número de oyentes para el evento especificado
Consultar el número de oyentes para el evento especificado del objeto.
1
2Integer LruCache.listenerCount(Value o,
String ev);
Parámetros de llamada:
- o: Valor, especifica el objeto de la consulta.
- ev: Cadena, especifica el nombre del evento.
Resultados de devolución:
- Integer, devuelve el número de oyentes para el evento especificado
eventNames
Nombre del evento del oyente de consultas
1Array LruCache.eventNames();
Resultados de devolución:
- Array, devuelve una serie de nombres de eventos
emit
Activar activamente un evento
1
2Boolean LruCache.emit(String ev,
...args);
Parámetros de llamada:
- ev: Cadena, nombre del evento
- args: ..., los parámetros del evento se pasarán a la función de procesamiento de eventos
Resultados de devolución:
- Boolean, devuelve el estado del activador del evento, devuelve verdadero si hay un evento de respuesta; de lo contrario, devuelve falso
toString
Devuelve la representación de cadena del objeto. Generalmente, se devuelve "[Objeto nativo]". El objeto se puede volver a implementar de acuerdo con sus propias características.
1String LruCache.toString();
Resultados de devolución:
- String, devuelve la representación de cadena del objeto
toJSON
Devuelve una representación en formato JSON del objeto, que generalmente devuelve una colección de propiedades legibles definidas por el objeto.
1Value LruCache.toJSON(String key = "");
Parámetros de llamada:
- key: Cadena, no utilizada
Resultados de devolución:
- Value, devuelve un valor que contiene JSON serializable