LRUMapを使ってメモリにキャッシュ
あるキーを使用してDBからデータを取り出し、 取り出したデータからファイルを色々読み込んでオブジェクトを生成。。。
ブログの1ページを表示するのに以上のようなアルゴリズムでページを生成してたのですが、 これだと結構負荷が大きい。
まずDBへのアクセスに時間がかかって、次にファイルの読み込みに時間がかかる。 というわけでデータ自体をメモリにキャッシュしておいて必要に応じてファイルから読み込むようにしたいなあと思っていたら、ありました!ぴったりのクラス「org.apache.commons.collections.LRUMap」が。
毎度の「攻略Jakarta Commons」を読むと以下のような説明。
LRUMapは,設定したサイズを超えた要素を自動的に削除する機能をもったMapです。いわゆるLRU(Least Recentry Used)アルゴリズムを使うわけです。
// 例えばキャッシュするサイズを3とする。 Map map = new LRUMap(3); map.put("test1","value1"); map.put("test2","value2"); map.get("test1"); map.put("test3","value3"); map.put("test4","value4"); map.get("test1"); map.put("test5","value5");
こんな感じで使用すると、mapの中に保存されている要素は、test1とtest4とtest5のみになり、他の要素への参照は削除されるようです。