オブジェクトLruキャッシュ
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: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 回だけトリガーされます。
1
2Object LruCache.once(String ev,
Function func);
呼び出しパラメータ:
- ev: 文字列、イベントの名前を指定します
- func: 関数、イベント処理関数を指定します
返される結果:
- Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。
ワンタイム イベント ハンドラーをオブジェクトにバインドします。ワンタイム ハンドラーは 1 回だけトリガーされます。
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 を含む値を返します