IBM Cloud Docs
Práticas recomendadas para Databases for Redis

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 como allkeys-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:

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.