Trabalhando com cache (iniciante)

3 respostas
I

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…

3 Respostas

rogelgarcia

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

ViniGodoy

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

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;  
   }  
}

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.

I

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

Criado 19 de março de 2010
Ultima resposta 22 de mar. de 2010
Respostas 3
Participantes 3