A princípio, aplicações da próxima geração, na vanguarda da interação do usuário, costumam dizer a ele: “Percebemos que você gostou de X. Achamos que você gostará de Y.” Ou, em sua próxima etapa de compra, recebe uma mensagem de “Muitos de nossos usuários parecem mais felizes se escolherem C com A. Achamos que você deveria saber”.

Por isso, esses tipos de aplicações, focadas em experiência, apresentam aos usuários as ofertas no CONTEXTO de suas outras ações / decisões, ainda aquecidos e prontos para melhorar sua experiência. Como resultado, muitas vezes essas ofertas são muito mais poderosas do que se oferecidas por e-mail ou telefone várias dias depois. Dessa forma, essa inteligência adicional nas aplicações também contribui para uma experiência agradável ao usuário. Por fim, esse tipo de recurso faz muito sentido para os negócios, porque as empresas concorrentes podem facilmente atrair clientes fiéis, caso ofereçam uma experiência melhor.

Seja como for, com a crescente disponibilidade de capacidade de computação barata, ferramentas de processamento de dados e estruturas de aprendizado, torna-se cada vez mais possível incorporar “inteligência” em aplicações. No entanto, é crucial adicioná-la sem interromper o desempenho ou a capacidade de resposta das aplicações. Aquelas voltadas ao cliente, em particular, precisam responder em menos de 100 ms, para atender às expectativas de experiência do usuário.

Dessa forma, com as latências da Internet que, geralmente, apresentam até 50 ms de ida e volta, o processamento de aplicações, o acesso aos dados e as respostas precisam ser gerados em 50 ms. Então, para conseguir isso em escala, o banco de dados deve ser capaz de fornecer tempos de resposta abaixo de milissegundos, em qualquer condição de carga. Por fim, acrescente a necessidade de obter inteligência, o que significa que suas operações analíticas em dados ativos precisam ser realizadas nas mesmas velocidades e, frequentemente, na mesma operação. Em outras palavras, a análise no banco de dados se torna crítica para atender aos requisitos de desempenho e funcionalidade.

Figura 1. Requisitos de tempo de resposta da aplicação de ponta a ponta

 

Recursos Analíticos da Redis

Em resumo, Redis é uma plataforma de banco de dados “in memory”, mais conhecida por seu alto desempenho, extrema versatilidade com estruturas de dados e extensibilidade modular a qualquer caso de uso de processamento, análise ou armazenamento de dados.

Antes de tudo, conjuntos classificados ordenam seus membros por uma pontuação. Dessa maneira, a recuperação de membros por intervalos de pontuação é trivial nas operações de Conjunto Sortido. Ou seja, isso os torna um ajuste natural para dados de séries temporais, gerenciamento de lances em tempo real, compras por valores de pedidos, etc.

Figura 2. Representação do conjunto classificado

 

Em outras palavras, operações analíticas semelhantes são incorporadas a outras estruturas de dados. Por conseguinte, essas estruturas incluem comandos que analisam dados geoespaciais e calculam as distâncias específicas entre membros e muito mais. Ao mesmo tempo, o hiperloglog retorna estimativas de probabilidades de cardinalidade, sem precisar armazenar os itens reais que são adicionados a um conjunto. Assim, maximiza a eficiência do espaço na memória quando há milhões de itens.

Enfim, essas operações analíticas existem lado a lado de estruturas de processamento de dados como Listas, Hashes, Conjuntos e funcionalidades como Publicar / Assinar. Além disso, comandos como expiração de chave, incremento / decréscimo de valores, envio e exibição de listas e muito mais, o que permite que desenvolvedores usem dados de diferentes estruturas, como blocos de construção dentro de sua aplicação.

Figura 3. As estruturas de dados Redis são como blocos de construção