Redis, abreviação de Remote Dictionary Server, é um armazenamento de estrutura de dados de valor-chave na memória de código aberto e licenciado em BSD escrito em linguagem C por Salvatore Sanfillipo e foi lançado pela primeira vez em 10 de maio de 2009. Dependendo de como está configurado , o Redis pode atuar como um banco de dados, um cache ou um agente de mensagens. É importante observar que o Redis é um sistema de banco de dados NoSQL. Isso implica que, diferentemente dos sistemas de banco de dados orientados por SQL (Structured Query Language), como MySQL, PostgreSQL e Oracle, o Redis não armazena dados em esquemas de banco de dados bem definidos que constituem tabelas, linhas e colunas. Em vez disso, o Redis armazena dados em estruturas de dados, o que o torna muito flexível de usar. A hospedagem do ScaleGrid para Redis™* permite automatizar suas operações demoradas para uma variedade de diferentes casos de uso do Redis. Neste blog, descrevemos os principais casos de uso do Redis pelos diferentes tipos de estrutura de dados principais.
Estruturas de dados no Redis
Vamos dar uma olhada em alguns tipos de dados compatíveis com o Redis. No Redis, temos strings, listas, conjuntos, conjuntos classificados e hashes, que abordaremos neste artigo. Além disso, temos outros tipos de dados, como bitmaps, hiperloglogs e índices geoespaciais com consultas e fluxos de raio. Embora existam algumas ferramentas GUI do Redis escritas pela comunidade Redis, a linha de comando é de longe o cliente mais importante, ao contrário dos usuários populares de bancos de dados SQL que geralmente preferem sistemas de gerenciamento de GUI, por exemplo, phpMyAdmin para MySQL e PgAdmin para PostgreSQL.
Vamos dar uma olhada nos tipos de dados que existem no Redis.
Strings Redis
As strings do Redis são o tipo mais básico de valor do Redis aproveitado por todos os outros tipos de estrutura de dados e são bastante semelhantes às strings em outras linguagens de programação, como Java ou Python. Strings, que podem conter qualquer tipo de dados, são consideradas binárias seguras e têm um comprimento máximo de 512 MB. Aqui estão alguns comandos úteis para strings do Redis:
Para armazenar uma string ‘john ' sob uma chave como 'aluno' no Redis, execute o comando:
SET “aluno” “john”
Para recuperar a string, use o comando GET como mostrado:
GET “aluno”
Para deletar a string contida na chave use o comando DEL:
DEL “aluno”
Casos de uso de strings Redis
- Cache de sessão: Muitos sites utilizam Redis Strings para criar um cache de sessão para acelerar sua experiência no site armazenando em cache fragmentos ou páginas HTML. Como os dados são armazenados temporariamente na RAM, esse atributo torna o Redis a escolha perfeita como cache de sessão. Ele é capaz de armazenar temporariamente dados específicos do usuário, por exemplo, itens armazenados em um carrinho de compras em uma loja online, o que é crucial para que seus usuários não percam seus dados caso saiam ou percam a conexão.
- Filas: Qualquer aplicativo que lide com congestionamento de tráfego, mensagens, coleta de dados, gerenciamento de tarefas ou roteamento de empacotador deve considerar uma Fila Redis, pois isso pode ajudá-lo a gerenciar o tamanho da fila por taxa de chegada e partida para distribuição de recursos.
- Uso e faturamento medido: Um caso de uso menos conhecido para Redis Strings é a medição em tempo real para modelos de preços baseados em consumo. Isso permite que as plataformas SaaS que faturam com base no uso real meçam a atividade de seus clientes, como no setor de telecomunicações, onde eles podem cobrar por mensagens de texto ou minutos.
Listas Redis
As listas contêm strings classificadas por ordem de inserção. Com as listas do Redis, você pode adicionar itens ao início ou ao final das listas, o que é muito útil para enfileirar trabalhos. Se houver trabalhos mais urgentes que você precisa executar, eles podem ser colocados na frente de outros trabalhos de prioridade mais baixa na fila. Usaríamos o comando LPUSH para inserir um elemento no início ou à esquerda da string, e o comando RPUSH para inserir na cauda ou à direita de nossa string. Vejamos um exemplo:
LPUSH list x # agora a lista é "x"
LPUSH list y # agora a lista é "y","x"
RPUSH list z # agora a lista é "y","x","z" (observe como o elemento 'z' foi adicionado ao final da lista pelo comando RPUSH)
Casos de uso da lista Redis
- Sites de redes sociais: Plataformas sociais como o Twitter usam listas Redis para preencher suas linhas do tempo ou feeds da página inicial e podem personalizar a parte superior de seus feeds com tweets ou histórias em alta.
- Feeds RSS: Crie feeds de notícias de fontes personalizadas onde você pode obter as atualizações mais recentes e permitir que os seguidores interessados assinem seu feed RSS.
- Quadros de líderes: Fóruns como o Reddit e outras plataformas de votação aproveitam as listas do Redis para adicionar artigos à tabela de classificação e classificar pelas entradas mais votadas.
Saiba como criar seu próprio feed do Twitter em nossos tweets de armazenamento em cache usando a postagem do blog Node.js, Redis e Socket.io.
Principais #Redis Casos de Uso por Tipos de Estrutura de Dados PrincipaisClique para Tweet
Conjuntos Redis
Redis Sets são tipos de dados poderosos que suportam operações poderosas como interseções e uniões. Eles não estão em nenhuma ordem e geralmente são usados quando você deseja realizar uma auditoria e ver as relações entre várias variáveis. Os conjuntos são razoavelmente rápidos e, independentemente do número de elementos armazenados, levará o mesmo tempo para adicionar ou remover itens em um conjunto. Além disso, os conjuntos não permitem chaves duplicadas ou membros duplicados, portanto, uma chave adicionada várias vezes em um conjunto será simplesmente ignorada. Isso é impulsionado por uma função chamada SADD que evita a duplicação de várias entradas semelhantes. O atributo SADD pode ser empregado ao verificar valores exclusivos e também para agendar trabalhos executados em segundo plano, incluindo trabalhos cron que são scripts automatizados.
Eles são particularmente úteis para analisar o comportamento do cliente em tempo real em seu site de compras online. Por exemplo, se você estiver administrando uma loja de roupas online, o Redis Sorted Sets emprega técnicas de correspondência de relacionamento, como uniões, interseções e subtrações (comumente aplicadas em diagramas de Venn) para fornecer uma imagem precisa do comportamento do cliente. Você pode recuperar dados sobre padrões de compras entre gêneros, quais produtos de roupas vendem mais e quais horas registram as vendas mais altas.
Redis define casos de uso
- Análise de vendas de comércio eletrônico: Muitas lojas online usam o Redis Sets para analisar o comportamento do cliente, como pesquisas ou compras para uma categoria ou subcategoria de produto específica. Por exemplo, o proprietário de uma livraria on-line pode descobrir quantos clientes compraram livros médicos de psicologia.
- Rastreamento de endereço IP: Os Conjuntos Redis são uma ótima ferramenta para desenvolvedores que desejam analisar todos os endereços IP que visitaram uma página específica do site ou postagem de blog e podem ignorar todas as duplicatas para visitantes únicos com sua função SADD.
- Filtragem de conteúdo imprópria: Para qualquer aplicativo que coleta a entrada do usuário, é uma boa ideia implementar a filtragem de conteúdo para palavras inapropriadas, e você pode fazer isso com o Redis Sets adicionando palavras que deseja filtrar a uma tecla SET e ao comando SADD.
Conjuntos ordenados
Como o nome sugere, os conjuntos classificados do Redis são uma coleção de strings que atribuem uma ordem aos seus elementos e são uma das estruturas de dados mais avançadas do Redis. Eles são semelhantes aos Conjuntos Redis, só que os Conjuntos não têm ordem, enquanto os Conjuntos classificados associam cada membro a uma pontuação. Sorted Sets são conhecidos por serem muito rápidos, pois você pode retornar listas ordenadas e acessar elementos no menor tempo possível.
Casos de uso de conjuntos ordenados do Redis
- Plataformas de perguntas e respostas: Muitas plataformas de perguntas e respostas, como Stack Overflow e Quora, usam o Redis Sorted Sets para classificar as respostas mais votadas para cada pergunta proposta para garantir que o conteúdo de melhor qualidade seja listado na parte superior da página.
- Platuras de aplicativos de jogos: Os aplicativos de jogos on-line aproveitam os conjuntos classificados do Redis para manter suas listas de pontuações mais altas, pois as pontuações podem ser repetidas, mas as strings que contêm os detalhes exclusivos do usuário não podem.
- Serviço de agendamento de tarefas: Os conjuntos classificados do Redis são uma ótima ferramenta para um serviço de agendamento de tarefas, pois você pode associar uma pontuação para classificar a prioridade de uma tarefa em sua fila. Para qualquer tarefa que não tenha uma pontuação anotada, você pode usar a opção PESOS para um padrão de 1.
- Geo Hashing: A API de indexação geográfica do Redis usa um conjunto classificado para a técnica Geo Hash, que permite indexar locais com base em latitude e longitude, transformando dados multidimensionais em dados lineares.
Redis Hashes
Os Redis Hashes são mapas entre campos de string e valores de string. Este é o tipo de dados obrigatório se você precisar criar essencialmente um contêiner de campos exclusivos e seus valores para representar objetos. Os hashes permitem que você armazene uma quantidade razoável de campos, até 232 – 1 pares de valor de campo (mais de 4 bilhões), ocupando muito pouco espaço. Você deve usar Redis Hashes sempre que possível, pois pode usar uma pequena instância do Redis para armazenar milhões de objetos. Você pode usar operações básicas de comando de hash, como obter, definir, existir, além de muitas operações avançadas.
Casos de uso de hashes Redis
- Perfis de usuário: Muitos aplicativos da Web usam Redis Hashes para seus perfis de usuário, pois podem usar um único hash para todos os campos do usuário, como nome, sobrenome, e-mail, senha etc.
- Postagens do usuário: Plataformas sociais como o Instagram aproveitam o Redis Hashes para mapear todas as fotos ou postagens de usuários arquivadas de volta para um único usuário. O mecanismo de hash permite que eles pesquisem e retornem valores muito rapidamente, ajustem os dados na memória e aproveitem a persistência de dados no caso de um de seus servidores morrer.
- Armazenando métricas de vários locatários: Os aplicativos de vários locatários podem aproveitar os hashes do Redis para registrar e armazenar suas métricas de produto e vendas de uma maneira que garanta uma separação sólida entre cada locatário, pois os hashes podem ser codificados com eficiência em um espaço de memória muito pequeno.
Quem usa o Redis?
A Redis conquistou uma enorme participação de mercado nos setores de viagens e hospitalidade, fóruns comunitários, mídia social, SaaS e comércio eletrônico, para citar apenas alguns. Algumas das principais empresas que usam Redis incluem Pinterest, Uber, Slack, Airbnb, Twitter e Stack Overflow. Aqui estão algumas estatísticas sobre a popularidade do Redis hoje:
- 4.107 empresas relataram usar o Redis no StackShare
- 8.759 desenvolvedores afirmaram usar o Redis no StackShare
- 38.094 usuários do GitHub marcaram o Redis com estrela
- #8 banco de dados classificado em DB-Engines com uma pontuação de 144,08