ObjectLruCache
LruCache (Least Recent Used Cache) è una classe utilizzata per mantenere la cache LRU. Può memorizzare un certo numero di valori e mantiene la dimensione del contenitore. Quando arrivano nuovi dati, se il contenitore non ha raggiunto il limite di dimensione, i nuovi dati possono essere aggiunti direttamente al contenitore. Se il contenitore è pieno, eliminerà i dati utilizzati meno di recente
Possiamo usarlo come segue:
1
2const util = require('util')
const c = new util.LruCache(10, 100) // create a LruCache instance with size 10 and timeout 100ms
Tra questi, set() è un'interfaccia per l'impostazione di coppie chiave-valore:
1LruCache.set(String name, Value value);
Il parametro name specifica il valore della chiave da impostare e il parametro value specifica il valore da impostare.
LruCache
Il get
metodo può utilizzare la funzione di callback per aggiornare i dati della cache:
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));
Risultati di:
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
Quando si utilizza specificamente LruCache, si consiglia agli sviluppatori di seguire le seguenti best practice:
- È possibile utilizzare LruCache per ottimizzare le prestazioni dell'applicazione impostando un punto temporale specifico come punto fresco durante l'elaborazione dei dati di back-end e impostando l'ora di scadenza.
- Analizza le decisioni aziendali negli scenari corrispondenti. Ad esempio, gli aggiornamenti dei dati più frequenti devono essere configurati con un tempo di scadenza più breve, mentre i dati memorizzati nella cache con una frequenza di aggiornamento inferiore non devono impostare un tempo di scadenza troppo breve.
- In diversi scenari di utilizzo, considera diversi modelli di accesso ai dati e utilizza le istanze della classe LruCache appropriate.
rapporto ereditario
Costruttore
LruCache
Costruttore di oggetti LruCache
1
2new LruCache(Integer size,
Integer timeout = 0);
Parametri di chiamata:
- size: Integer, la dimensione massima della cache
- timeout: Numero intero, tempo di scadenza dell'elemento, l'unità è ms, minore o uguale a 0 non scadrà, il valore predefinito è 0
proprietà statica
defaultMaxListeners
Integer, il numero massimo globale predefinito di listener
1static Integer LruCache.defaultMaxListeners;
attributo membro
size
Integer, interroga il numero di valori nel contenitore
1readonly Integer LruCache.size;
timeout
Integer, query e imposta il tempo di scadenza degli elementi nel contenitore, l'unità è ms, se è minore o uguale a 0, non scadrà
1Integer LruCache.timeout;
onexpire
Funzione, query e evento di timeout dei dati di bind, equivalente a on("expire", func);
1Function LruCache.onexpire;
funzione membro
clear
cancellare i dati del contenitore
1LruCache.clear();
has
Verificare se i dati della chiave specificata esistono nel contenitore
1Boolean LruCache.has(String name);
Parametri di chiamata:
- name: String, specifica il valore della chiave da verificare
risultato di ritorno:
- Boolean, restituisce se la chiave esiste
get
Eseguire una query sul valore della chiave specificata
1Value LruCache.get(String name);
Parametri di chiamata:
- name: String, specifica il valore della chiave da interrogare
risultato di ritorno:
- Value, restituisce il valore corrispondente al valore della chiave o undefined se non esiste
Interroga il valore del valore chiave specificato, se non esiste o scade, chiama la funzione di callback per aggiornare i dati
1
2Value LruCache.get(String name,
Function updater);
Parametri di chiamata:
- name: String, specifica il valore della chiave da interrogare
- updater: Funzione, specifica la funzione di aggiornamento
risultato di ritorno:
- Value, restituisce il valore corrispondente alla chiave
set
Imposta i dati del valore della chiave, inserisci un nuovo dato se il valore della chiave non esiste
1
2LruCache.set(String name,
Value value);
Parametri di chiamata:
- name: String, specifica il valore della chiave da impostare
- value: Valore, specifica i dati da impostare
Impostare i dati del valore della chiave, inserire nuovi dati se il valore della chiave non esiste
1LruCache.set(Object map);
Parametri di chiamata:
- map: Object, specifica il dizionario dati valore-chiave da impostare
remove
Elimina tutti i valori del valore chiave specificato
1LruCache.remove(String name);
Parametri di chiamata:
- name: String, specifica il valore della chiave da eliminare
isEmpty
Controlla se il contenitore è vuoto
1Boolean LruCache.isEmpty();
risultato di ritorno:
- Boolean, restituisce true se non è presente alcun valore nel contenitore
on
Associa un gestore di eventi a un oggetto
1
2Object LruCache.on(String ev,
Function func);
Parametri di chiamata:
- ev: String, il nome dell'evento specificato
- func: Funzione, specifica la funzione del gestore eventi
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
Associa un gestore di eventi a un oggetto
1Object LruCache.on(Object map);
Parametri di chiamata:
- map: Oggetto, specifica la relazione di mappatura dell'evento, il nome dell'attributo dell'oggetto verrà utilizzato come nome dell'evento e il valore dell'attributo verrà utilizzato come funzione di elaborazione dell'evento
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
addListener
Associa un gestore di eventi a un oggetto
1
2Object LruCache.addListener(String ev,
Function func);
Parametri di chiamata:
- ev: String, il nome dell'evento specificato
- func: Funzione, specifica la funzione del gestore eventi
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
Associa un gestore di eventi a un oggetto
1Object LruCache.addListener(Object map);
Parametri di chiamata:
- map: Oggetto, specifica la relazione di mappatura dell'evento, il nome dell'attributo dell'oggetto verrà utilizzato come nome dell'evento e il valore dell'attributo verrà utilizzato come funzione di elaborazione dell'evento
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
prependListener
Associa una funzione del gestore eventi all'inizio dell'oggetto
1
2Object LruCache.prependListener(String ev,
Function func);
Parametri di chiamata:
- ev: String, il nome dell'evento specificato
- func: Funzione, specifica la funzione del gestore eventi
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
Associa una funzione del gestore eventi all'inizio dell'oggetto
1Object LruCache.prependListener(Object map);
Parametri di chiamata:
- map: Oggetto, specifica la relazione di mappatura dell'evento, il nome dell'attributo dell'oggetto verrà utilizzato come nome dell'evento e il valore dell'attributo verrà utilizzato come funzione di elaborazione dell'evento
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
once
Associa un gestore di eventi monouso all'oggetto, il gestore monouso verrà attivato solo una volta
1
2Object LruCache.once(String ev,
Function func);
Parametri di chiamata:
- ev: String, il nome dell'evento specificato
- func: Funzione, specifica la funzione del gestore eventi
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
Associa un gestore di eventi monouso all'oggetto, il gestore monouso verrà attivato solo una volta
1Object LruCache.once(Object map);
Parametri di chiamata:
- map: Oggetto, specifica la relazione di mappatura dell'evento, il nome dell'attributo dell'oggetto verrà utilizzato come nome dell'evento e il valore dell'attributo verrà utilizzato come funzione di elaborazione dell'evento
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
prependOnceListener
Associa una funzione del gestore eventi all'inizio dell'oggetto
1
2Object LruCache.prependOnceListener(String ev,
Function func);
Parametri di chiamata:
- ev: String, il nome dell'evento specificato
- func: Funzione, specifica la funzione del gestore eventi
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
Associa una funzione del gestore eventi all'inizio dell'oggetto
1Object LruCache.prependOnceListener(Object map);
Parametri di chiamata:
- map: Oggetto, specifica la relazione di mappatura dell'evento, il nome dell'attributo dell'oggetto verrà utilizzato come nome dell'evento e il valore dell'attributo verrà utilizzato come funzione di elaborazione dell'evento
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
off
funzione unspecify dalla coda di elaborazione degli oggetti
1
2Object LruCache.off(String ev,
Function func);
Parametri di chiamata:
- ev: String, il nome dell'evento specificato
- func: Funzione, specifica la funzione del gestore eventi
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
Annulla tutte le funzioni nella coda di elaborazione degli oggetti
1Object LruCache.off(String ev);
Parametri di chiamata:
- ev: String, il nome dell'evento specificato
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
funzione unspecify dalla coda di elaborazione degli oggetti
1Object LruCache.off(Object map);
Parametri di chiamata:
- map: Object, specifica la relazione di mappatura dell'evento, il nome dell'attributo dell'oggetto viene utilizzato come nome dell'evento e il valore dell'attributo viene utilizzato come funzione di elaborazione dell'evento
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
removeListener
funzione unspecify dalla coda di elaborazione degli oggetti
1
2Object LruCache.removeListener(String ev,
Function func);
Parametri di chiamata:
- ev: String, il nome dell'evento specificato
- func: Funzione, specifica la funzione del gestore eventi
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
Annulla tutte le funzioni nella coda di elaborazione degli oggetti
1Object LruCache.removeListener(String ev);
Parametri di chiamata:
- ev: String, il nome dell'evento specificato
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
funzione unspecify dalla coda di elaborazione degli oggetti
1Object LruCache.removeListener(Object map);
Parametri di chiamata:
- map: Object, specifica la relazione di mappatura dell'evento, il nome dell'attributo dell'oggetto viene utilizzato come nome dell'evento e il valore dell'attributo viene utilizzato come funzione di elaborazione dell'evento
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
removeAllListeners
Annulla tutti i listener per tutti gli eventi dalla coda di elaborazione dell'oggetto o rimuove tutti i listener per l'evento specificato se è specificato un evento.
1Object LruCache.removeAllListeners(String ev);
Parametri di chiamata:
- ev: String, il nome dell'evento specificato
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
Annulla tutti i listener per tutti gli eventi dalla coda di elaborazione dell'oggetto o rimuove tutti i listener per l'evento specificato se è specificato un evento.
1Object LruCache.removeAllListeners(Array evs = []);
Parametri di chiamata:
- evs: Array, il nome dell'evento specificato
risultato di ritorno:
- Object, restituisce l'oggetto evento stesso, utile per le chiamate a catena
setMaxListeners
Il limite predefinito per il numero di ascoltatori, solo per compatibilità
1LruCache.setMaxListeners(Integer n);
Parametri di chiamata:
- n: Integer, specifica il numero di eventi
getMaxListeners
Ottiene il numero limitato predefinito di listener, solo per compatibilità
1Integer LruCache.getMaxListeners();
risultato di ritorno:
- Integer, restituisce il numero limite predefinito
listeners
Interroga l'array di listener per l'evento specificato dell'oggetto
1Array LruCache.listeners(String ev);
Parametri di chiamata:
- ev: String, il nome dell'evento specificato
risultato di ritorno:
- Array, restituisce una matrice di listener per l'evento specificato
listenerCount
Interroga il numero di ascoltatori per l'evento specificato dell'oggetto
1Integer LruCache.listenerCount(String ev);
Parametri di chiamata:
- ev: String, il nome dell'evento specificato
risultato di ritorno:
- Integer, restituisce il numero di ascoltatori per l'evento specificato
Interroga il numero di ascoltatori per l'evento specificato dell'oggetto
1
2Integer LruCache.listenerCount(Value o,
String ev);
Parametri di chiamata:
- o: Value, specifica l'oggetto della query
- ev: String, il nome dell'evento specificato
risultato di ritorno:
- Integer, restituisce il numero di ascoltatori per l'evento specificato
eventNames
Interroga il nome dell'evento del listener
1Array LruCache.eventNames();
risultato di ritorno:
- Array, restituisce una matrice di nomi di eventi
emit
Attivare attivamente un evento
1
2Boolean LruCache.emit(String ev,
...args);
Parametri di chiamata:
- ev: stringa, nome dell'evento
- args: ..., i parametri dell'evento, verranno passati alla funzione del gestore dell'evento
risultato di ritorno:
- Boolean, restituisce lo stato di attivazione dell'evento, restituisce true se è presente un evento di risposta, altrimenti restituisce false
toString
Restituisce la rappresentazione in stringa dell'oggetto, generalmente restituisce "[Native Object]", l'oggetto può essere reimplementato secondo le proprie caratteristiche
1String LruCache.toString();
risultato di ritorno:
- String, restituisce una rappresentazione in forma di stringa dell'oggetto
toJSON
Restituisce la rappresentazione in formato JSON dell'oggetto, in genere restituisce una raccolta di proprietà leggibili definite dall'oggetto
1Value LruCache.toJSON(String key = "");
Parametri di chiamata:
- key: stringa, non utilizzata
risultato di ritorno:
- Value, che restituisce un valore serializzabile in JSON