Práticas recomendadas para Databases for Redis
Tome um tempo para revisar as melhores práticas a seguir que são recomendadas se você estiver usando o Databases for Redis.
O que é Databases for Redis?
Databases for Redis é um serviço OSS Redis gerenciado oferecido no IBM Cloud. É um armazenamento de estrutura de dados na memória usado como um banco de dados, cache, intermediário de mensagens e mecanismo de fluxo de dados. Ao contrário dos bancos de dados tradicionais, que armazenam dados no disco, o Redis armazena dados na memória (RAM) permitindo baixa latência. Os dados são efêmeros, que permitem que o Databases for Redis ofereça desempenho superior e alto rendimento. Também é possível configurar o Redis para armazenar dados persistentemente no disco, negociando o desempenho com a disponibilidade de dados, porque isso é feito ativando a sincronização do AOF (Anexar apenas arquivo) com capturas instantâneas do RBD.
Capturas instantâneas RBD são ativadas para backup e alta disponibilidade, mesmo se a persistência estiver desativada.
Melhores práticas para planejamento de capacidade de instância
Deve-se planejar a capacidade da instância do Databases for Redis com base em seu aplicativo e design arquitetural, entender os requisitos de hardware e se preparar para o aumento ou a diminuição na demanda. As recomendações a seguir podem ajudar a otimizar o tamanho de sua instância.
- Entenda seus dados
- Espera-se que você saiba os tipos de dados, o tamanho e o tempo de vida de seus dados Isso ajuda a entender a duração dos dados disponíveis na memória antes de serem excluídos ou movidos.
- Estimar requisitos de memória
- É importante calcular os seus requisitos de memória Lembre-se de fatorar não apenas seus dados, mas também a memória necessária para replicação, conexões do cliente, buffers de memória máxima e metadados do Redis.
- Entenda os carregamentos de leitura / gravação
- Identificar seus carregamentos de leitura / gravação ajuda você a se preparar para as necessidades de ajuste automático de escala, o tempo de suas solicitações de aplicativo e a manter a sincronização do seguidor principal.
- Entenda suas necessidades de IOPS
- As operações de entrada / saída por segundo são um fator-chave que você deve considerar no planejamento da capacidade da instância Databases for Redis obtém capturas instantâneas do RDB periodicamente, de acordo com a configuração padrão do Redis, que envolve o disco, mesmo se sua instância estiver configurada para cache. É possível que bancos de dados muito ocupados excedam o IOPS para o tamanho do disco, e aumentar o tamanho do disco pode aliviar um gargalo de desempenho.
- Plano para redundância e reconexões
- Há vários componentes envolvidos no cálculo de nuvem, que podem causar falhas momentâneas. No entanto, em IBM® Cloud Databases, oferecemos 99.99% de alta disponibilidade e encorajamos você a planejar blips de conexões em seu design de aplicativo usando a lógica de nova tentativa e reconexão.
- Considerar largura da banda da rede
- Sua largura da banda da rede pode afetar significativamente o desempenho do Databases for Redis. Assegure-se de ter largura da banda de rede suficiente para manipular seus carregamentos de banco de dados.
- Acompanhamento e ajustamentos
- Nossa recomendação é monitorar o desempenho e o uso da instância do Databases for Redis usando IBM Cloud® Monitoring para determinar o padrão de uso em evolução da instância do banco de dados e redimensionar conforme necessário.
Melhores práticas para desempenho
- Desativar persistência
- Por padrão, o Databases for Redis possui persistência ativada. Isso grava a sincronização de AOF e aumenta o carregamento de IOPS Se seu aplicativo não precisar persistir dados, desative isso usando o comando
Set appendonly = no
. Para obter mais informações, consulte
Definir um cache de exemplo. - RAM vs núcleos
- Redis é um banco de dados na memória de encadeamento único. Inerentemente, ele precisa de mais RAM que CORES, ao contrário de outros bancos de dados persistentes. Embora seja de encadeamento único, ele usa 'multiplexação' para processar as solicitações, mas todas as solicitações são processadas por um encadeamento. No entanto, outros núcleos são necessários para manter a integridade e a estabilidade do banco de dados para seus processos internos. Você é encorajado a focar mais na RAM e no disco (para IOPS) para Databases for Redis. Para obter mais informações, consulte Melhores práticas para o planejamento de capacidade da instância
- Memória de downsizing
- Você é aconselhado a tomar cuidado ao reduzir a memória da instância do Databases for Redis. Como o Redis é um banco de dados na memória, sua memória retém seus dados para propósitos de armazenamento, processamento e recuperação A redução drástica da memória pode parar temporariamente sua instância retornando um erro, porque não há espaço suficiente disponível para concluir as operações Por exemplo, considere 20 GB de dados tentando carregar em 15 GB de memória, este caso está vinculado a retornar um erro
- Evite comandos caros
- Determinados comandos no Redis são caros para executar. Por exemplo, o comando KEYS, que é usado frequentemente, mas deve ser evitado. Em vez disso, use o comando SCAN, que espalha a iteração em muitas chamadas e não liga todo o servidor de uma vez.
- Escolha uma política de despejo
- Você deve escolher uma política de despejo que funcione para o seu aplicativo Por padrão, as implementações são configuradas com uma política
noeviction
. Use políticas de despejo comoallkeys-lru
,volatile-lru
,allkeys-random
,volatile-random
volatile-ttl
. Para obter mais informações, consulte política de memória. - Configurar valores maxmemory
- É possível ajustar o valor
maxmemory
. No entanto, configure um limite razoável, caso contrário, seus dados poderão consumir toda a memória disponível e sua implementação poderá ficar sem recursos.. Por padrão, configuramos em 80% da memória disponível do nó de dados. - Configurar políticas TTL (Time-To-Live)
- TTL é um ótimo recurso onde as chaves são excluídas do banco de dados após um tempo definido. Isso será extremamente útil se você estiver usando Redis um cache. No entanto, tenha cuidado ao configurar um valor muito curto ou muito longo porque um valor muito curto pode criar uma recomputação de valores e um valor muito longo pode criar uso de memória desnecessário. Para obter mais informações, consulte Comando TTL.
Práticas recomendadas para alta disponibilidade
- Tentar novamente e reconectar a lógica
- Os sistemas são propensos a interrupções Você é altamente encorajado a implementar a lógica de nova tentativa e de reconexão em sua arquitetura de aplicativo para evitar interrupções Use IOREDIS, NODEREDIS ou qualquer outro pacote de sua escolha para assegurar a continuidade de sua aplicação
Para obter mais informações, consulte a postagem do blog sobre detecção e tratamento de erros com o Redis.
Melhores práticas para monitoramento
Deve-se monitorar seu LogDNA para os erros comuns a seguir e tomar medidas corretivas:
- Sincronização AOF
- Disponível somente leitura
- Conexão com principal perdida
- Para obter orientação sobre como evitar erros, consulte Como é possível evitar erros comuns do Databases for Redis ?
Melhores práticas gerais
- Conjunto de conexões
- Criar ou fechar conexões é dispendioso. Gerenciar conexões de forma eficiente é importante e o conjunto de conexões é útil para minimizar a sobrecarga associada a conexões de abertura e fechamento. Para obter mais informações, consulte pooling de conexões.
- limites de conexão
- Utilize conexões com eficiência. A sobrecarga do site Databases for Redis com muitas conexões retornará erros e você sofrerá interrupções no aplicativo. Deixe algumas conexões disponíveis, já que um número delas é reservado internamente para manter o estado e a integridade do seu banco de dados. É recomendável usar o conjunto de conexões. Para obter mais informações, consulte limites de conexão.
- Tempos limite de conexão
- Configurar os valores de tempo limite apropriados para suas conexões também é importante para evitar que os recursos sejam ligados indefinidamente. No entanto, tenha cuidado ao configurar tempos limites curtos, pois isso pode levar à perda de clientes da conexão e ao aumento da latência. Alinhe os tempos limite com as expectativas operacionais de seu aplicativo
- Use o recurso de pipeline Redis
- O pipelining do Redis é uma técnica para melhorar o desempenho emitindo vários comandos de uma vez sem esperar a resposta para cada comando individual. Para obter mais informações, consulte Redis pipelining.
- Use o recurso Redis Streams
- Redis Streams é um tipo de dado que fornece uma abstração na memória super rápida de um log somente de anexação
- Dividir dados grandes
- Recomenda-se dividir grandes conjuntos de dados em partes menores com mais chaves, ou seja, dividir seus dados em várias chaves.
- Planejamento em lote
- Databases for Redis é planejado para criar backups automatizados todos os dias em um horário planejado. Durante esse tempo, o IOPS de seus bancos de dados é utilizado É recomendado que você não execute suas próprias tarefas em lote neste momento.
- Configurar canais de notificação
- Recomendamos que o Databases for Redis configure IDs de e-mail em Contas do IBM para receber atualizações periódicas sobre mudanças de versão, planejamentos de término de vida ou manutenção.. Também é possível monitorar seu ícone de notificação de Conta do IBM para receber essas atualizações
Para obter mais informações, consulte Práticas recomendadas para Redis na postagem do blog IBM Cloud.