O Redis armazena chaves apontando para valores. As chaves podem ter qualquer valor binário até um tamanho razoável (recomenda-se o uso de cadeias ASCII curtas para fins de legibilidade e depuração). Os valores são um dos cinco tipos de dados Redis nativos.
1.strings - uma sequência de bytes binários seguros até 512 MB
2.hashes - uma coleção de pares de valores-chave
3.lists - uma coleção de strings em ordem de inserção
4.sets - uma coleção de strings exclusivas, sem pedidos
5. sortidos - uma coleção de strings únicas ordenadas pela pontuação definida pelo usuário
Cordas
Uma sequência Redis é uma sequência de bytes.
As seqüências de caracteres no Redis são binárias seguras (o que significa que elas têm um comprimento conhecido não determinado por caracteres especiais de terminação), portanto, você pode armazenar qualquer coisa até 512 megabytes em uma sequência.
Strings são o conceito canônico de "armazenamento de valores-chave". Você tem uma chave apontando para um valor, em que chave e valor são cadeias de texto ou binárias.
Para todas as operações possíveis em strings, consulte o
http://redis.io/commands/#string
Hashes
Um hash Redis é uma coleção de pares de valores-chave.
Um hash Redis contém muitos pares de valores-chave, onde cada chave e valor é uma sequência. Os hashes Redis não suportam valores complexos diretamente (ou seja, você não pode ter um campo de hash com o valor de uma lista ou conjunto ou outro hash), mas pode usar campos de hash para apontar para outros valores complexos de nível superior. A única operação especial que você pode executar em valores de campo de hash é incremento / decremento atômico do conteúdo numérico.
Você pode pensar em um hash Redis de duas maneiras: como uma representação direta de objeto e como uma maneira de armazenar muitos valores pequenos de maneira compacta.
Representações diretas de objetos são simples de entender. Os objetos têm um nome (a chave do hash) e uma coleção de chaves internas com valores. Veja o exemplo abaixo para, bem, um exemplo.
Armazenar muitos valores pequenos usando um hash é uma técnica inteligente de armazenamento de dados massiva Redis. Quando um hash possui um pequeno número de campos (~ 100), o Redis otimiza a eficiência de armazenamento e acesso de todo o hash. A otimização de armazenamento de hash pequeno da Redis gera um comportamento interessante: é mais eficiente ter 100 hashes, cada um com 100 chaves e valores internos, em vez de ter 10.000 chaves de nível superior apontando para valores de string. O uso de hashes Redis para otimizar seu armazenamento de dados dessa maneira exige uma sobrecarga adicional de programação para rastrear onde os dados terminam, mas se o armazenamento de dados for baseado principalmente em cadeia, você poderá economizar muita sobrecarga de memória usando esse truque estranho.
Para todas as operações possíveis em hashes, consulte os documentos de hash
Listas
As listas Redis funcionam como listas vinculadas.
Você pode inserir, excluir e percorrer listas a partir da cabeça ou da cauda de uma lista.
Use as listas quando precisar manter os valores na ordem em que foram inseridos. (O Redis oferece a opção de inserir em qualquer posição da lista arbitrária, se necessário, mas o desempenho da inserção será prejudicado se você inserir longe da sua posição inicial.)
As listas Redis são frequentemente usadas como filas de produtores / consumidores. Insira itens em uma lista e, em seguida, pop itens da lista. O que acontece se seus consumidores tentarem sair de uma lista sem elementos? Você pode pedir ao Redis para aguardar a exibição de um elemento e devolvê-lo imediatamente quando for adicionado. Isso transforma o Redis em um sistema de fila de mensagens / evento / trabalho / tarefa / notificação em tempo real.
Você pode remover elementos atomicamente de cada extremidade de uma lista, permitindo que qualquer lista seja tratada como uma pilha ou uma fila.
Você também pode manter listas de tamanho fixo (coleções limitadas) cortando sua lista para um tamanho específico após cada inserção.
Para todas as operações possíveis nas listas, consulte os documentos da lista
Conjuntos
Os conjuntos Redis são, bem, conjuntos.
Um conjunto Redis contém seqüências de caracteres Redis não ordenadas exclusivas, onde cada sequência existe apenas uma vez por conjunto. Se você adicionar o mesmo elemento dez vezes a um conjunto, ele será exibido apenas uma vez. Os conjuntos são ótimos para garantir preguiçosamente que algo existe pelo menos uma vez sem se preocupar com elementos duplicados acumulando e desperdiçando espaço. Você pode adicionar a mesma sequência quantas vezes quiser, sem precisar verificar se ela já existe.
Os conjuntos são rápidos para verificação, inserção e exclusão de membros no conjunto.
Os conjuntos têm operações eficientes de conjuntos, como seria de esperar. Você pode obter a união, interseção e diferença de vários conjuntos ao mesmo tempo. Os resultados podem ser retornados ao chamador ou os resultados podem ser armazenados em um novo conjunto para uso posterior.
Os conjuntos têm acesso a tempo constante para verificações de associação (ao contrário das listas), e o Redis ainda possui remoção e retorno aleatórios convenientes de membros ("retire um elemento aleatório do conjunto") ou membros aleatórios retornando sem substituição ("dê-me 30 usuários únicos aleatórios" ") ou com substituição (" dê-me 7 cartões, mas após cada seleção, coloque o cartão de volta para que possa ser amostrado novamente ").
Para todas as operações possíveis em conjuntos, consulte os documentos de conjuntos .
Conjuntos classificados
Os conjuntos classificados Redis são conjuntos com uma ordem definida pelo usuário.
Para simplificar, você pode pensar em um conjunto classificado como uma árvore binária com elementos exclusivos. (Os conjuntos classificados Redis são, na verdade, ignorar listas .) A ordem de classificação dos elementos é definida pela pontuação de cada elemento.
Conjuntos classificados ainda são conjuntos. Os elementos podem aparecer apenas uma vez em um conjunto. Um elemento, para fins de exclusividade, é definido pelo conteúdo da sequência. Inserir o elemento "apple" com a classificação 3 e, em seguida, inserir o elemento "apple" com a classificação 500 resulta em um elemento "apple" com a classificação 500 no seu conjunto classificado. Os conjuntos são exclusivos apenas com base em dados, não com base em pares (pontuação, dados).
Verifique se o modelo de dados se baseia no conteúdo da sequência e não na pontuação do elemento para exclusividade. É permitido que as pontuações sejam repetidas (ou mesmo zero), mas, uma última vez, os elementos do conjunto podem existir apenas uma vez por conjunto classificado. Por exemplo, se você tentar armazenar o histórico de cada login de usuário como um conjunto classificado, fazendo com que a pontuação seja a época do login e o valor do ID do usuário, você acabará armazenando apenas a última época de login para todos os usuários. Seu conjunto aumentaria para o tamanho da sua base de usuários e não para o tamanho desejado de logins da base de usuários *.
Os elementos são adicionados ao seu conjunto com pontuações. Você pode atualizar a pontuação de qualquer elemento a qualquer momento, basta adicionar o elemento novamente com uma nova pontuação. As pontuações são representadas por pontos flutuantes duplos, para que você possa especificar a granularidade de carimbos de data / hora de alta precisão, se necessário. Vários elementos podem ter a mesma pontuação.
Você pode recuperar elementos de algumas maneiras diferentes. Como tudo está classificado, você pode solicitar elementos a partir das pontuações mais baixas. Você pode solicitar elementos começando com as pontuações mais altas ("ao contrário"). Você pode solicitar elementos por sua classificação, em ordem natural ou inversa.
Para todas as operações possíveis em conjuntos classificados, consulte os documentos dos conjuntos classificados.