Trabalhando com cache (iniciante)

Pessoal, eu tenho a seguinte situação, tenho varios " clientes " que enviam dados para um “proxy” esse proxy envia os dados para os “servidores” que processam os dados e enviam o resultado, o problema eh que eu preciso armazenar um cache com os dados e o resultado, enviados pelos clientes para que se eles enviarem os msm dados eu retorne o resultado sem utilizar os servidores. Não estou querendo a resposta soh preciso de um direcionamento para pesquisar…desde ja , grato…

Esse proxy é um programa que vc tem acesso?

Se for… monte um mapa onde a chave é a requisicao… e a resposta seja o valor…

Assim vc compara a requisicao atual com as que já foram feitas… e devolve a página em cache… ou pede ao servidor

Use para isso um Map. Por exemplo, o programa abaixo usa um cache para evitar que o mesmo fibonacci seja calculado duas vezes:

[code]public class Fibonacci {
private Map<Integer, Long> cache = new HashMap<Integer, Long>();

public long fib(int i) {
if (i == 0)
return 0;
if (i == 1)
return 1;

  //Verifica se o valor já está em cache  
  Long num = cache.get(i);  
  if (num != null) //Se estiver, retorna o do cache  
     return num;

  //Se não estiver, faz o calculo  
  long f = fib(i-1) + fib(i-2);

  //Armazena no cache.
  cache.put(f);

  //Retorna o valor calculado  
  return f;  

}
} [/code]

Esse cache não expira. Se o seu precisar expirar, você pode ao invés de armazenar o valor diretamente, armazenar um objeto que contenha o valor e o timestamp de quando ele foi colocado lá (com System.currentTimeMillis). Aí, basta verificar se o valor que já está no cache excede um determinado intervalo de tempo estipulado e forçar que ele seja recalculado, caso isso ocorra.

Valeu galera… agora eu ja tenho uma base para resolver o problema