Gostaria de saber qual seria a melhor abordagem para invalidar / atualizar objetos de cache.
Pré-requisitos
- Ter servidor memcached remoto (servindo como cache para vários aplicativos)
- Todos os servidores são hospedados pelo azure (regiões de afinidade, mesmos data centers)
- O tamanho do objeto de cache varia de 200 bytes a 50 kilobytes
Abordagem 1 (armazenar no cache o mais rápido possível)
- O objeto A é criado -> armazenar no banco de dados e armazenar no cache
- Objeto A solicitado pelo cliente -> verificar a existência de cache, caso contrário, buscar no banco de dados e armazenar no cache
- O objeto A é atualizado -> armazenar no banco de dados, armazenar no cache
A abordagem 1 parece ser mais direta. Se algo for criado, coloque no cache o mais rápido possível. Independentemente de alguém vai precisar.
Abordagem 2 (armazenamento lento do cache)
- O objeto A é criado -> armazenar no banco de dados
- Objeto A solicitado pelo cliente -> verificar a existência de cache, caso contrário, buscar no banco de dados e armazenar no cache
- O objeto A é atualizado -> armazenar no banco de dados, excluir chave no cache
A abordagem 2 parece ter mais consciência da memória. Nesta abordagem, apenas os itens solicitados vão para o cache.
Pergunta 1: Tendo em vista o desempenho, qual seria uma abordagem melhor? A memória nem a CPU ainda não contam.
Pergunta 2: Meus pensamentos são uma espécie de otimização prematura?
Pergunta 3: Quaisquer outros pensamentos? Outras abordagens?