Redis
Datastore de código aberto, rápido e na memória para uso como banco de dados, cache, agente de mensagens e fila.
Blog em destaque: What's New in Redis 5?
O que é o Redis?
O Redis é um datastore de chave-valor rápido, de código aberto e na memória para uso como banco de dados, cache, agente de mensagens e fila. O serviço fornece tempos de resposta inferiores a um milissegundo para atender a milhões de solicitações por segundo, o que viabiliza aplicativos em tempo real nas áreas de jogos, tecnologia de anúncios, serviços financeiros, saúde e IoT. O Redis é uma escolha comum para armazenamento em cache, gerenciamento de sessões, análises em tempo real, análises geoespaciais, chat/sistema de mensagens, streaming de mídia e placares de jogos.
Blog 1: Working with Redis Streams >>
Como funciona o Redis?
Todos os dados do Redis residem na memória, ao contrário de banco de dados que armazenam dados em discos ou SSDs. A eliminação da necessidade de acessar discos permite que datastores na memória, como o Redis, evitem tempos de pesquisa e acessem os dados em microssegundos. O Redis oferece estruturas de dados versáteis, alta disponibilidade, análises geoespaciais, scripts Lua, transações, persistência em disco e suporte a clusters para simplificar a criação de aplicativos em tempo real na escala da Internet.
Redis gerenciado com criptografia, redimensionamento de clusters online, alta disponibilidade e conformidade. Saiba mais >>
Benefícios do Redis
Datastore na memória
Todos os dados do Redis residem na memória principal do servidor, ao contrário de bancos de dados como PostgreSQL, Cassandra, MongoDB e outros que armazenam a maioria dos dados em discos ou SSDs. Nos bancos de dados tradicionais, baseados em disco, a maioria das operações exige acesso ao disco. Por outro lado, datastores na memória como o Redis não têm essa limitação. Dessa forma, os armazenamentos na memória podem oferecer suporte a volumes de operações e tempos de resposta que são uma ordem de magnitude maiores que as demais soluções de armazenamento. O resultado: performance excepcional, com operações de leitura ou gravação demorando em média menos de um milissegundo e suporte a milhões de operações por segundo.
Estruturas flexíveis de dados
Ao contrário de datastores de chave-valor simples, que oferecem estruturas de dados limitadas, o Redis oferece uma grande variedade de estruturas de dados para atender aos requisitos dos aplicativos. Os tipos de dados do Redis incluem:
- Strings – dados em texto ou binários com tamanho de até 512 MB
- Listas – uma coleção de strings na ordem em que foram adicionadas
- Conjuntos – uma coleção não ordenada de strings com o recurso de executar operações de intersecção, união e diferente com outros tipos de conjuntos
- Conjuntos ordenados – conjuntos ordenados por um valor
- Hashes – uma estrutura de dados para armazenar uma lista de campos e valores
- Bitmaps – um tipo de dados que oferece operações com bits
- HyperLogLogs – uma estrutura de dados probabilística para estimar os dados únicos em um conjunto de dados
Simplicidade e facilidade de uso
O Redis simplifica a codificação, reduzindo a quantidade de código necessária para armazenar, acessar e usar dados em aplicativos. Por exemplo, se o aplicativo tiver dados armazenados em um hashmap e você quiser armazenar esses dados em um datastore, basta usar a estrutura de dados de hash do Redis para armazenar os dados. Uma tarefa similar, em um datastore sem estruturas de dados de hash, exigiria muitas linhas de código para a conversão de um formato para o outro. O Redis é fornecido com estruturas de dados nativas e várias opções para manipular e interagir com dados. Mais de cem clientes de código aberto estão disponíveis para os desenvolvedores do Redis. As linguagens compatíveis incluem Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, R, Go e muitas outras.
Replicação e persistência
O Redis emprega uma arquitetura de réplica principal e oferece suporte à replicação assíncrona, o que permite a replicação de dados para vários servidores de réplica. Essa arquitetura oferece maior performance de leitura (com a distribuição das solicitações entre vários servidores) e recuperação quando o servidor primário sofre uma interrupção. Para proporcionar persistência, o Redis oferece suporte a backups point-in-time (cópia do conjunto de dados do Redis para disco).
Alta disponibilidade e escalabilidade
O Redis oferece uma arquitetura de réplica principal em um único nó principal ou em uma topologia de clusters. Dessa forma, você pode criar soluções altamente disponíveis que oferecem performance e confiabilidade consistentes. Quando for necessário ajustar o tamanho do cluster, você poderá usar uma das diversas opções de escalabilidade vertical ou horizontal disponíveis. Assim, o cluster pode crescer com a demanda.
Extensibilidade
O Redis é um projeto de código aberto que conta com o suporte de uma comunidade vibrante. Não há aprisionamento a nenhum fornecedor ou tecnologia, pois o Redis é baseado em padrões abertos, compatível com formatos de dados abertos e disponibiliza um conjunto avançado de clientes.
Casos de uso populares do Redis
Armazenamento em cache
O Redis é uma excelente escolha para a implementação de caches de memória altamente disponíveis para diminuir a latência de acesso aos dados, aumentar o throughput e aliviar a sobrecarga de aplicativos e bancos de dados relacionais ou NoSQL. O Redis pode fornecer itens frequentemente solicitados com um tempo de resposta inferior a um milissegundo. Além disso, pode escalar facilmente para processar cargas maiores sem necessidade de aumentar o back-end de alto custo. Entre os exemplos mais comuns de armazenamento em cache com o Redis, estão resultados de consultas de banco de dados, sessões persistentes, páginas web e objetos frequentemente usados como imagens, arquivos e metadados.
Chat, sistemas de mensagens e filas
O Redis oferece suporte a Pub/Sub com correspondência de padrões e a várias estruturas de dados como listas, conjuntos ordenados e hashes. Assim, o Redis pode oferecer suporte a salas de chat de alta performance, streams de comentários em tempo real, feeds de mídia social e intercomunicação de servidores. A estrutura de dados Redis List facilita a implementação de uma fila leve. As listas oferecem operações atômicas e recursos de bloqueio e são adequadas para vários aplicativos que exigem um agente de mensagens ou uma lista circular confiável.
Placares de jogos
O Redis é uma escolha comum de desenvolvedores de jogos que precisam criar placares em tempo real. Basta usar a estrutura de dados Sorted Set do Redis que disponibiliza a especificidade de elementos enquanto mantém a lista classificada de acordo com suas pontuações. A criação de uma lista classificada em tempo real é tão fácil quanto atualizar a pontuação de um usuário toda vez que ela muda. Você também pode usar conjuntos classificados para processar dados de séries temporais usando time stamps como pontuação.
Armazenamento de sessões
O Redis é um datastore na memória com alta disponibilidade e persistência, escolhido frequentemente por desenvolvedores de aplicativos para armazenar e gerenciar dados de sessão para aplicativos na escala da Internet. O Redis oferece a latência inferior a um milissegundo, a escala e a resiliência necessárias para gerenciar dados de sessão como perfis de usuário, credenciais, estados de sessão e personalizações específicas de usuários.
Streaming de mídia avançada
O Redis oferece um datastore rápido na memória para viabilizar casos de uso de streaming ao vivo. O Redis pode ser usado para armazenar metadados sobre perfis de usuários, visualização de históricos e informações/tokens de autenticação para milhões de usuários, bem como armazenar arquivos manifesto para possibilitar que CDNs façam streaming de vídeo para milhões de usuários de dispositivos móveis e desktops ao mesmo tempo.
Dados geoespaciais
O Redis oferece estruturas e operadores de dados na memória para uso específico, o que permite gerenciar em tempo real dados geoespaciais em grande escala e velocidade. Comandos como GEOADD, GEODIST, GEORADIUS e GEORADIUSBYMEMBER para armazenar, processar e analisar dados geoespaciais em tempo real facilitam e agilizam o uso de recursos geoespaciais com o Redis. Você pode usar o Redis para adicionar aos aplicativos recursos baseados em localização como tempo de percurso, distância do percurso e pontos de interesse.
Machine Learning
Aplicativos modernos e orientados a dados exigem machine learning para processar rapidamente um grande volume e variedade de dados e automatizar a tomada de decisões. Para casos de uso como detecção de fraudes em jogos e serviços financeiros, fazer ofertas em tempo real em tecnologia de anúncios e matchmaking para encontros e transporte solidário, a capacidade de processar dados ao vivo e tomar decisões em dezenas de milissegundos é fundamental. O Redis oferece um datastore ágil na memória para criar, treinar e implantar rapidamente modelos de Machine Learning.
Análise em tempo real
O Redis pode ser usado com soluções de streaming como Apache Kafka e Amazon Kinesis, atuando como datastore na memória para consumir, processar e analisar dados em tempo real com latência inferior a um milissegundo. O Redis é uma escolha ideal para casos de uso de análises em tempo real, como análises de mídia social, direcionamento de anúncios, personalização e IoT.
Suporte a linguagens
O Redis oferece suporte à maioria das principais linguagens e protocolos de comunicação, incluindo:
Python
Java
PHP
Perl
Go
Ruby
C/C#/C++
JavaScript
Node.js
Redis gerenciado na AWS
Recursos do Redis