Questão
Estou procurando uma API de cache de objeto Java na memória. Alguma recomendação? Que soluções você usou no passado?
Atual
No momento, estou apenas usando um mapa:
Map cache = new HashMap<String, Object>();
cache.put("key", value);
Requisitos
Preciso estender o cache para incluir recursos básicos como:
- tamanho máximo
- Tempo de Viver
No entanto, não preciso de recursos mais sofisticados, como:
- Acesso de vários processos (servidor de cache)
- Persistência (para o disco)
Sugestões
Cache na memória:
- Guava CacheBuilder - desenvolvimento ativo. Veja esta apresentação .
- LRUMap - Config via API. Sem TTL. Não foi criado especificamente para armazenamento em cache.
- whirlycache - configuração XML. Lista de mala direta. Última atualização em 2006.
- cache4j - configuração XML. Documentação em russo. Última atualização em 2006.
Cache empresarial:
@Cacheable
partir de aspectos jcabiRespostas:
EHCache é muito bom. Você pode criar um cache na memória. Confira seus exemplos de código para obter um exemplo de criação de um cache na memória. Você pode especificar um tamanho máximo e um tempo de vida.
O EHCache oferece alguns recursos avançados, mas se você não estiver interessado em usá-los, não faça isso. Mas é bom saber que eles estão lá se seus requisitos mudarem.
Aqui está um cache na memória. Criado em código, sem arquivos de configuração.
Cria um cache que comporta 200 elementos e tem um ttl de 24 horas.
fonte
Eu realmente gosto do
MapMaker
que vem com o Google Guava ( API )O JavaDoc tem um exemplo bastante interessante que demonstra sua facilidade de uso e seu poder:
Além disso, a versão 10.0 do Guava introduziu um
com.google.common.cache
pacote muito mais extenso (há uma boa entrada no wiki sobre como usá-los ).fonte
Você também pode verificar minha pequena biblioteca de cache chamada KittyCache em:
https://github.com/treeder/kitty-cache
Existem alguns benchmarks de desempenho em relação ao ehcache.
É usado no projeto SimpleJPA como um cache de segundo nível.
fonte
Você pode verificar LinkedHashMap para implementar um cache simples sem jars de terceiros:
então você pode obter do cache como
resto deixado como exercício para o leitor :)
fonte
O MapMaker do Guava foi substituído pela classe CacheBuilder .
fonte
JCS é testado e comprovado. Mesmo que seja leve no que diz respeito aos mecanismos de cache, você pode cavar no código real e imitar o que eles fazem com o HashMap nos bastidores para exatamente o que você precisa e nada mais. Você parece ter uma boa ideia do que está procurando.
fonte
memcached possui cliente para Java. http://www.danga.com/memcached/ Requer um processo separado para ser um servidor de cache, mas é uma coisa poderosa.
fonte