タグ

programmingとCacheに関するOooのブックマーク (3)

  • Java でオンメモリキャッシュを実装するときにスレッドについて気をつけるべきこと - Qiita

    Java では常にスレッドについて意識する必要がある。 Map にキャッシュデータを入れたい場合、HashMap を使ってはいけない。HashMap はスレッドセーフではないからだ。 synchronized で保護してもいいが、いちいちするのも面倒だし、問題が起きがちなんで、 のように、Collections.synchronizedMap() でよしなにする方法がある。この方法でラップすると、メソッドアクセスの際に synchronized がかかるので安全になる。 ConcurrentHashMap と HashMap HashMap をマルチスレッドからアクセスする場合、get メソッドを使った場合でも synchronized をかけざるをえず、パフォーマンスが出ない。 ConcurrentHashMap ならば、取得時にはロックがかからないので、キャッシュには Concurre

    Java でオンメモリキャッシュを実装するときにスレッドについて気をつけるべきこと - Qiita
  • そんなリザルトキャッシュで大丈夫か? #jjug

    7. たまにみる実装 static Map<BigInteger, List<BigInteger>> cache = new HashMap<>; void doGet(…) { BigInteger n = …; List<BigInteger> result = cache.get(n); if (result == null) { result = PrimeFactor.divide(n); // 素因数分解 cache.put(n, result); } // … } 8. たまにみる実装 static Map<BigInteger, List<BigInteger>> cache = new HashMap<>; void doGet(…) { BigInteger n = …; List<BigInteger> result = cache.get(n); if (resu

    そんなリザルトキャッシュで大丈夫か? #jjug
  • Webアプリにおけるキャッシュ。オレオレ事例 - ゆーすけべー日記

    Webアプリにおいて、アクセスやデータ量が多く/大きくなってくると、 バックエンドのパフォーマンスが低下しがちです。 MySQLなどのRDBMSにデータを置いている場合は適切に クエリーを改善する、インデックスを張る、といった策で解決する場合もありますが、 キャッシュを効果的に利用することでより高負荷に対応できる可能性があります。 また、外部APIへの問い合わせなど、どうしてもネットワークや他のリソースのレスポンスタイムに 引きずられる部分に関しては情報を手元にキャッシュしておくと何かとよいでしょう。 今回はWebアプリケーションのレイヤーで最近僕がどのようにキャッシュを使っているのか? の事例を紹介しつつまとめてみたいと思います。 キャッシュについてとその基 そもそもキャッシュとは、簡単にふわっと表現するならば、 「一時的に情報を手元の近い場所に置いておいて利用する手法、もしくはその一

    Webアプリにおけるキャッシュ。オレオレ事例 - ゆーすけべー日記
  • 1