Skip to content

franciscosantos1914/in-memory-db

Repository files navigation

Redis Logo

🚀 User Story

Como um desenvolvedor, eu quero criar um clone da base de dados Redis para que eu possa usar funcionalidades semelhantes ao Redis em meus projetos Node.js.

1. 📝 Planejamento e Requisitos

  • Tarefa: Definir os requisitos e funcionalidades básicas que o clone deve ter.
    • Sub-tarefa: Listar as principais funcionalidades do Redis que serão implementadas.
      • Detalhes: Incluir operações para manipulação de strings, listas, conjuntos, hashes, etc.
    • Sub-tarefa: Definir os requisitos de desempenho e escalabilidade.
      • Detalhes: Estabelecer metas de desempenho e escalabilidade para garantir que o clone possa lidar com grandes volumes de dados e tráfego.

2. ⚙️ Configuração do Ambiente de Desenvolvimento

  • Tarefa: Configurar o ambiente de desenvolvimento Node.js.
    • Sub-tarefa: Instalar Node.js e npm.
      • Detalhes: Baixar e instalar a versão mais recente do Node.js e npm para o sistema operacional alvo.
    • Sub-tarefa: Configurar um editor de código (ex: Visual Studio Code).
      • Detalhes: Configurar extensões úteis, como linting, formatação de código e depuração, no Visual Studio Code.

3. 🏗️ Estrutura do Projeto

  • Tarefa: Definir a estrutura do projeto.
    • Sub-tarefa: Criar a estrutura de diretórios para o projeto.
      • Detalhes: Organizar os arquivos em uma estrutura lógica, como separar o código-fonte, os testes e a documentação.
    • Sub-tarefa: Configurar o package.json e instalar dependências necessárias.
      • Detalhes: Inicializar um projeto Node.js, definir as dependências necessárias e configurar scripts de desenvolvimento, teste e construção.

4. 🛠️ Implementação de Funcionalidades

  • Tarefa: Implementar as funcionalidades básicas do Redis.
    • Sub-tarefa: Implementar o armazenamento de strings.
      • Detalhes: Desenvolver lógica para armazenar e recuperar strings em memória.
    • Sub-tarefa: Implementar listas.
      • Detalhes: Criar métodos para manipulação de listas, como adicionar, remover e acessar elementos.
    • Sub-tarefa: Implementar conjuntos.
      • Detalhes: Criar funções para lidar com conjuntos, incluindo operações como adicionar, remover e verificar a existência de elementos.
    • Sub-tarefa: Implementar hashes.
      • Detalhes: Desenvolver métodos para armazenar e manipular pares de chave-valor em memória.
    • Sub-tarefa: Implementar operações de expiração de chaves.
      • Detalhes: Adicionar suporte para definir um tempo de expiração para chaves e remover automaticamente as chaves expiradas.

5. 📂 Persistência de Dados

  • Tarefa: Implementar a persistência de dados.
    • Sub-tarefa: Escolher um mecanismo de armazenamento (ex: arquivos, banco de dados SQL, etc.).
      • Detalhes: Avaliar diferentes opções de armazenamento para persistir os dados do clone do Redis.
    • Sub-tarefa: Implementar a lógica de leitura e escrita de dados.
      • Detalhes: Desenvolver funções para salvar e carregar os dados armazenados em disco.

6. 🧪 Testes

  • Tarefa: Desenvolver e executar testes unitários e de integração.
    • Sub-tarefa: Escrever testes para as funcionalidades implementadas.
      • Detalhes: Criar testes para cada função e método implementado para garantir que eles funcionem conforme o esperado.
    • Sub-tarefa: Utilizar frameworks de teste como Jest ou Mocha.
      • Detalhes: Configurar e executar testes automatizados usando frameworks de teste populares do ecossistema Node.js.

7. 📚 Documentação

  • Tarefa: Documentar a API e como usar o clone do Redis.
    • Sub-tarefa: Escrever documentação para cada funcionalidade.
      • Detalhes: Criar documentação detalhada para cada método e função, incluindo descrições, exemplos de uso e parâmetros aceitos.
    • Sub-tarefa: Criar exemplos de uso.
      • Detalhes: Preparar exemplos de código que demonstram como usar as funcionalidades do clone do Redis em diferentes cenários.

8. ⚡ Performance e Escalabilidade

  • Tarefa: Avaliar e melhorar a performance e escalabilidade.
    • Sub-tarefa: Realizar benchmarks e testes de carga.
      • Detalhes: Executar testes de desempenho para identificar gargalos e áreas de melhoria.
    • Sub-tarefa: Identificar e corrigir gargalos.
      • Detalhes: Otimizar o código e a infraestrutura para melhorar a performance e escalabilidade do clone do Redis.

9. 🎯 Implementação de Recursos Avançados

  • Tarefa: Implementar recursos avançados do Redis.
    • Sub-tarefa: Implementar transações.
      • Detalhes: Desenvolver suporte para transações atômicas que consistem em várias operações agrupadas em uma única unidade de trabalho.
    • Sub-tarefa: Implementar pub/sub.
      • Detalhes: Adicionar suporte para mensagens pub/sub para comunicação assíncrona entre partes do sistema.

10. 🚀 Deploy e Monitoramento

  • Tarefa: Preparar o clone para produção.
    • Sub-tarefa: Configurar o deploy do projeto.
      • Detalhes: Implementar scripts e configurações para implantar o clone do Redis em ambientes de produção.
    • Sub-tarefa: Implementar monitoramento e logging.
      • Detalhes: Configurar ferramentas de monitoramento e logging para acompanhar o desempenho e o comportamento do clone do Redis em tempo real.