ObjectLruCache
LruCache (Least Recent Used Cache) ist eine Klasse, die zur Verwaltung des LRU-Cache verwendet wird. Es kann eine bestimmte Anzahl von Werten speichern und die Größe des Containers beibehalten. Wenn neue Daten eingehen und der Container die Größenbeschränkung nicht erreicht hat, können die neuen Daten direkt zum Container hinzugefügt werden. Wenn der Container voll ist, entfernt er die zuletzt verwendeten Daten
Wir können es auf folgende Weise verwenden:
1
2const util = require('util')
const c = new util.LruCache(10, 100) // create a LruCache instance with size 10 and timeout 100ms
Unter diesen ist set() die Schnittstelle zum Festlegen von Schlüssel-Wert-Paaren:
1LruCache.set(String name, Value value);
Der Namensparameter gibt den festzulegenden Schlüsselwert an, und der Wertparameter gibt den festzulegenden Wert an.
LruCache
Die get
Methode kann zwischengespeicherte Daten mithilfe einer Rückruffunktion aktualisieren:
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));
Ergebnisse der:
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
Bei der spezifischen Verwendung von LruCache wird Entwicklern empfohlen, die folgenden Best Practices zu befolgen:
- Sie können LruCache verwenden, um die Anwendungsleistung zu optimieren, indem Sie einen bestimmten Zeitpunkt als neuen Zeitpunkt während der Back-End-Datenverarbeitung verwenden und die Ablaufzeit festlegen.
- Analysieren Sie Geschäftsentscheidungen unter entsprechenden Szenarien. Beispielsweise müssen häufigere Datenaktualisierungen mit einer kürzeren Ablaufzeit konfiguriert werden, während zwischengespeicherte Daten, die seltener aktualisiert werden, nicht auf eine zu kurze Ablaufzeit eingestellt werden müssen.
- Berücksichtigen Sie in verschiedenen Nutzungsszenarien unterschiedliche Datenzugriffsmodi und verwenden Sie geeignete LruCache-Klasseninstanzen.
Erbschaftsverhältnis
Konstrukteur
LruCache
LruCache-Objektkonstruktor
1
2new LruCache(Integer size,
Integer timeout = 0);
Aufrufparameter:
- size: Ganzzahl, maximale Cachegröße
- timeout: Ganzzahl, Elementablaufzeit, Einheit ist ms. Wenn sie kleiner oder gleich 0 ist, läuft sie nicht ab. Der Standardwert ist 0.
statische Eigenschaften
defaultMaxListeners
Ganzzahl, die standardmäßige globale maximale Anzahl von Listenern
1static Integer LruCache.defaultMaxListeners;
Mitgliedereigenschaften
size
Ganzzahl, fragen Sie die Anzahl der Werte im Container ab
1readonly Integer LruCache.size;
timeout
Ganzzahl, fragen Sie die Ablaufzeit der Elemente im Container ab und legen Sie sie fest. Die Einheit ist ms. Wenn sie kleiner oder gleich 0 ist, läuft sie nicht ab.
1Integer LruCache.timeout;
onexpire
Funktion, Abfrage und Bindung von Daten-Timeout-Ereignissen, äquivalent zu on("expire", func);
1Function LruCache.onexpire;
Mitgliedsfunktion
clear
Containerdaten löschen
1LruCache.clear();
has
Überprüfen Sie, ob die Daten mit dem angegebenen Schlüsselwert im Container vorhanden sind
1Boolean LruCache.has(String name);
Aufrufparameter:
- name: String, gibt den zu prüfenden Schlüsselwert an
Rückgabeergebnisse:
- Boolean, gibt zurück, ob der Schlüsselwert existiert
get
Fragen Sie den Wert des angegebenen Schlüsselwerts ab
1Value LruCache.get(String name);
Aufrufparameter:
- name: String, geben Sie den Schlüsselwert an, der abgefragt werden soll
Rückgabeergebnisse:
- ValueGibt den Wert zurück, der dem Schlüsselwert entspricht. Wenn er nicht existiert, wird undefiniert zurückgegeben
Fragen Sie den Wert des angegebenen Schlüsselwerts ab. Wenn er nicht vorhanden ist oder abläuft, rufen Sie die Rückruffunktion auf, um die Daten zu aktualisieren.
1
2Value LruCache.get(String name,
Function updater);
Aufrufparameter:
- name: String, geben Sie den Schlüsselwert an, der abgefragt werden soll
- updater: Funktion, geben Sie die Aktualisierungsfunktion an
Rückgabeergebnisse:
- Value, gibt den Wert zurück, der dem Schlüsselwert entspricht
set
Legen Sie Schlüsselwertdaten fest. Wenn der Schlüsselwert nicht vorhanden ist, fügen Sie ein neues Datenelement ein.
1
2LruCache.set(String name,
Value value);
Aufrufparameter:
- name: String, geben Sie den festzulegenden Schlüsselwert an
- value: Wert, geben Sie die festzulegenden Daten an
Legen Sie Schlüsselwertdaten fest. Wenn der Schlüsselwert nicht vorhanden ist, fügen Sie neue Daten ein.
1LruCache.set(Object map);
Aufrufparameter:
- map: Objekt, gibt das festzulegende Schlüsselwert-Datenwörterbuch an
remove
Löschen Sie alle Werte des angegebenen Schlüssels
1LruCache.remove(String name);
Aufrufparameter:
- name: String, gibt den zu löschenden Schlüsselwert an
isEmpty
Prüfen Sie, ob der Behälter leer ist
1Boolean LruCache.isEmpty();
Rückgabeergebnisse:
- Boolean, gibt true zurück, wenn im Container kein Wert vorhanden ist
on
Binden Sie einen Event-Handler an das Objekt
1
2Object LruCache.on(String ev,
Function func);
Aufrufparameter:
- ev: String, gibt den Namen des Ereignisses an
- func: Funktion, geben Sie die Ereignisverarbeitungsfunktion an
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
Binden Sie einen Event-Handler an das Objekt
1Object LruCache.on(Object map);
Aufrufparameter:
- map: Objekt, gibt die Ereigniszuordnungsbeziehung an, der Objektattributname wird als Ereignisname und der Wert des Attributs als Ereignisverarbeitungsfunktion verwendet
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
addListener
Binden Sie einen Event-Handler an das Objekt
1
2Object LruCache.addListener(String ev,
Function func);
Aufrufparameter:
- ev: String, gibt den Namen des Ereignisses an
- func: Funktion, geben Sie die Ereignisverarbeitungsfunktion an
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
Binden Sie einen Event-Handler an das Objekt
1Object LruCache.addListener(Object map);
Aufrufparameter:
- map: Objekt, gibt die Ereigniszuordnungsbeziehung an, der Objektattributname wird als Ereignisname und der Wert des Attributs als Ereignisverarbeitungsfunktion verwendet
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
prependListener
Binden Sie einen Ereignishandler an den Ursprung des Objekts
1
2Object LruCache.prependListener(String ev,
Function func);
Aufrufparameter:
- ev: String, gibt den Namen des Ereignisses an
- func: Funktion, geben Sie die Ereignisverarbeitungsfunktion an
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
Binden Sie einen Ereignishandler an den Ursprung des Objekts
1Object LruCache.prependListener(Object map);
Aufrufparameter:
- map: Objekt, gibt die Ereigniszuordnungsbeziehung an, der Objektattributname wird als Ereignisname und der Wert des Attributs als Ereignisverarbeitungsfunktion verwendet
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
once
Binden Sie einen einmaligen Ereignishandler an das Objekt. Der einmalige Handler wird nur einmal ausgelöst.
1
2Object LruCache.once(String ev,
Function func);
Aufrufparameter:
- ev: String, gibt den Namen des Ereignisses an
- func: Funktion, geben Sie die Ereignisverarbeitungsfunktion an
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
Binden Sie einen einmaligen Ereignishandler an das Objekt. Der einmalige Handler wird nur einmal ausgelöst.
1Object LruCache.once(Object map);
Aufrufparameter:
- map: Objekt, gibt die Ereigniszuordnungsbeziehung an, der Objektattributname wird als Ereignisname und der Wert des Attributs als Ereignisverarbeitungsfunktion verwendet
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
prependOnceListener
Binden Sie einen Ereignishandler an den Ursprung des Objekts
1
2Object LruCache.prependOnceListener(String ev,
Function func);
Aufrufparameter:
- ev: String, gibt den Namen des Ereignisses an
- func: Funktion, geben Sie die Ereignisverarbeitungsfunktion an
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
Binden Sie einen Ereignishandler an den Ursprung des Objekts
1Object LruCache.prependOnceListener(Object map);
Aufrufparameter:
- map: Objekt, gibt die Ereigniszuordnungsbeziehung an, der Objektattributname wird als Ereignisname und der Wert des Attributs als Ereignisverarbeitungsfunktion verwendet
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
off
Heben Sie die Zuweisung einer Funktion zur Objektverarbeitungswarteschlange auf
1
2Object LruCache.off(String ev,
Function func);
Aufrufparameter:
- ev: String, gibt den Namen des Ereignisses an
- func: Funktion, geben Sie die Ereignisverarbeitungsfunktion an
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
Brechen Sie alle Funktionen in der Objektverarbeitungswarteschlange ab
1Object LruCache.off(String ev);
Aufrufparameter:
- ev: String, gibt den Namen des Ereignisses an
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
Heben Sie die Zuweisung einer Funktion zur Objektverarbeitungswarteschlange auf
1Object LruCache.off(Object map);
Aufrufparameter:
- map: Objekt, gibt die Ereigniszuordnungsbeziehung an, der Objektattributname wird als Ereignisname und der Wert des Attributs als Ereignisverarbeitungsfunktion verwendet
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
removeListener
Heben Sie die Zuweisung einer Funktion zur Objektverarbeitungswarteschlange auf
1
2Object LruCache.removeListener(String ev,
Function func);
Aufrufparameter:
- ev: String, gibt den Namen des Ereignisses an
- func: Funktion, geben Sie die Ereignisverarbeitungsfunktion an
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
Brechen Sie alle Funktionen in der Objektverarbeitungswarteschlange ab
1Object LruCache.removeListener(String ev);
Aufrufparameter:
- ev: String, gibt den Namen des Ereignisses an
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
Heben Sie die Zuweisung einer Funktion zur Objektverarbeitungswarteschlange auf
1Object LruCache.removeListener(Object map);
Aufrufparameter:
- map: Objekt, gibt die Ereigniszuordnungsbeziehung an, der Objektattributname wird als Ereignisname und der Wert des Attributs als Ereignisverarbeitungsfunktion verwendet
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
removeAllListeners
Löscht alle Listener für alle Ereignisse aus der Verarbeitungswarteschlange des Objekts. Wenn ein Ereignis angegeben ist, werden alle Listener für das angegebene Ereignis entfernt.
1Object LruCache.removeAllListeners(String ev);
Aufrufparameter:
- ev: String, gibt den Namen des Ereignisses an
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
Löscht alle Listener für alle Ereignisse aus der Verarbeitungswarteschlange des Objekts. Wenn ein Ereignis angegeben ist, werden alle Listener für das angegebene Ereignis entfernt.
1Object LruCache.removeAllListeners(Array evs = []);
Aufrufparameter:
- evs: Array, geben Sie den Namen des Ereignisses an
Rückgabeergebnisse:
- Object, gibt das Ereignisobjekt selbst zurück, um Kettenaufrufe zu erleichtern
setMaxListeners
Die Standardbeschränkung für die Anzahl der Listener dient nur der Kompatibilität
1LruCache.setMaxListeners(Integer n);
Aufrufparameter:
- n: Ganzzahl, geben Sie die Anzahl der Ereignisse an
getMaxListeners
Ruft nur aus Kompatibilitätsgründen die standardmäßige maximale Anzahl von Listenern ab
1Integer LruCache.getMaxListeners();
Rückgabeergebnisse:
- Integer, gibt die Standardgrenzmenge zurück
listeners
Fragen Sie das Listener-Array nach dem angegebenen Ereignis des Objekts ab
1Array LruCache.listeners(String ev);
Aufrufparameter:
- ev: String, gibt den Namen des Ereignisses an
Rückgabeergebnisse:
- Array, gibt das Listener-Array für das angegebene Ereignis zurück
listenerCount
Fragen Sie die Anzahl der Listener für das angegebene Ereignis des Objekts ab
1Integer LruCache.listenerCount(String ev);
Aufrufparameter:
- ev: String, gibt den Namen des Ereignisses an
Rückgabeergebnisse:
- Integer, gibt die Anzahl der Listener für das angegebene Ereignis zurück
Fragen Sie die Anzahl der Listener für das angegebene Ereignis des Objekts ab
1
2Integer LruCache.listenerCount(Value o,
String ev);
Aufrufparameter:
- o: Wert, gibt das Objekt der Abfrage an
- ev: String, gibt den Namen des Ereignisses an
Rückgabeergebnisse:
- Integer, gibt die Anzahl der Listener für das angegebene Ereignis zurück
eventNames
Name des Abfrage-Listener-Ereignisses
1Array LruCache.eventNames();
Rückgabeergebnisse:
- Array, gibt ein Array von Ereignisnamen zurück
emit
Ein Ereignis aktiv auslösen
1
2Boolean LruCache.emit(String ev,
...args);
Aufrufparameter:
- ev: String, Ereignisname
- args: ..., Ereignisparameter werden an die Ereignisverarbeitungsfunktion übergeben
Rückgabeergebnisse:
- Boolean, gibt den Ereignisauslöserstatus zurück, gibt „true“ zurück, wenn ein Antwortereignis vorliegt, andernfalls wird „false“ zurückgegeben
toString
Gibt die Zeichenfolgendarstellung des Objekts zurück. Im Allgemeinen wird „[Native Object]“ zurückgegeben. Das Objekt kann gemäß seinen eigenen Eigenschaften neu implementiert werden.
1String LruCache.toString();
Rückgabeergebnisse:
- String, gibt die Zeichenfolgendarstellung des Objekts zurück
toJSON
Gibt eine Darstellung des Objekts im JSON-Format zurück und gibt im Allgemeinen eine Sammlung lesbarer Eigenschaften zurück, die vom Objekt definiert werden.
1Value LruCache.toJSON(String key = "");
Aufrufparameter:
- key: Zeichenfolge, nicht verwendet
Rückgabeergebnisse:
- Value, gibt einen Wert zurück, der JSON serialisierbar enthält