Configurando o memcached para um cenário específico

1

Eu tenho um aplicativo da web que consulta o servidor opentsdb (que, no back-end, usando o cluster Hbase) para os datapoints de diferentes métricas e usando a biblioteca de gráficos javascript do dygraph, estou plotando essas métricas. Como a obtenção de todos os datapoints de um dia passado do opentsdb para uma determinada métrica está demorando quase 2 segundos, meu aplicativo que está plotando quase 25 métricas está se tornando muito lento.

Para reduzir essa latência, estou pensando em usar o módulo memcached do php5 para armazenar em cache todas as consultas. Mas tenho poucas perguntas sobre o memcached.

  1. Existe alguma maneira de configurar o memcache para continuar atualizando seu cache em segundo plano executando algumas consultas de linha de comando após determinado intervalo de tempo.

  2. Existe alguma maneira de configurar o memcache para sempre responder por uma consulta usando o cache, em vez de primeiro atualizar seu cache, porque meu aplicativo apenas cria pontos de dados para um dia anterior. Ausência de alguns pontos de dados não é tão crítica.

por pradeepchhetri 15.12.2012 / 15:01

1 resposta

1

Acho que o php.net manual do memcached aborda suas necessidades. Mas lembre-se de que você não pode obter os registros armazenados em memcache , como faz no banco de dados, usando o comando select .

  1. O Memcahe é um serviço que roda em segundo plano e você pode se conectar a ele usando o módulo memcache do php. Qualquer registro que você armazene no seu memcache, tem um expire sinalizador que informará ao servidor memcache quando ele tiver que remover seu registro. Dê uma olhada em this .

  2. Ele deve estar em seu código php. Você pode adicionar todos os seus registros no servidor memcache e definir o tempo de expiração para um dia, por exemplo. Todos os registros no memcache estão sendo diferenciados por uma chave. Agora, em seu código PHP, em vez de enviar uma solicitação para seu banco de dados, primeiro você pode verificar memcache para saber se ele está armazenando seu registro enviando sua chave de dados, ou seus dados foram removidos devido à sua expiração. Se o registro expirou agora, é hora de criar uma consulta para selecionar dados do banco de dados e armazená-los em seu servidor memcache novamente.

por 15.12.2012 / 16:18

Tags