O Redis suporta cinco tipos de dados fundamentais: string (texto), hash (tabela hash), list (lista), set (conjunto) e zset (conjunto ordenado).
String (Texto)
O tipo string é a estrutura mais básica do Redis, funcionando de forma similar ao Memcached, onde cada chave corresponde a um valor único.
As strings no Redis são binariamente seguras, o que significa que podem armazenar qualquer tipo de dado, como imagens JPEG ou objetos serializados.
Cada chave do tipo string pode armazenar até 512MB de dados.
Exemplo
redis 127.0.0.1:6379> SET titulo "Guia Redis"
OK
redis 127.0.0.1:6379> GET titulo
"Guia Redis"
No exemplo acima, utilizamos os comandos SET e GET do Redis. A chave é "titulo" e seu valor correspondente é "Guia Redis".
Observação: Uma única chave pode armazenar até 512MB.
Hash (Tabela Hash)
O hash do Redis é uma coleção de pares chave-valor. É uma mapeamento entre campos (campos) de tipo string e valores, sendo particularmente adequado para armazenar objetos.
Exemplo
127.0.0.1:6379> HMSET produto:1 nome "Laptop" preco "1200" estoque "50"
OK
127.0.0.1:6379> HGETALL produto:1
1) "nome"
2) "Laptop"
3) "preco"
4) "1200"
5) "estoque"
6) "50"
No exemplo acima, o tipo hash armazena informações de um produto. Utilizamos os comandos HMSET e HGETALL, com "produto:1" como chave.
Cada hash pode armazenar até 232 -1 pares chave-valor (mais de 4 bilhões).
List (Lista)
As listas do Redis são coleções simples de strings, ordenadas conforme a ordem de inserção. É possível adicionar elementos à cabeça (esquerda) ou à cauda (direita) da lista.
Exemplo
redis 127.0.0.1:6379> rpush frutas "maça"
(integer) 1
redis 127.0.0.1:6379> rpush frutas "banana"
(integer) 2
redis 127.0.0.1:6379> rpush frutas "laranja"
(integer) 3
redis 127.0.0.1:6379> lrange frutas 0 -1
1) "maça"
2) "banana"
3) "laranja"
redis 127.0.0.1:6379>
Uma lista pode conter até 232 - 1 elementos (4294967295, aproximadamente 4 bilhões).
Set (Conjunto)
Os sets do Redis são coleções não ordenadas de elementos do tipo string. Implementados através de tabelas hash, as operações de adição, remoção e busca têm complexidade O(1).
Comando sadd
Adiciona um elemento string ao conjunto associado à chave. Retorna 1 em caso de sucesso, 0 se o elemento já existir no conjunto, e erro se o conjunto não existir.
sadd chave membro
Exemplo
redis 127.0.0.1:6379> sadd cores "azul"
(integer) 1
redis 127.0.0.1:6379> sadd cores "verde"
(integer) 1
redis 127.0.0.1:6379> sadd cores "vermelho"
(integer) 1
redis 127.0.0.1:6379> sadd cores "azul"
(integer) 0
redis 127.0.0.1:6379> smembers cores
1) "azul"
2) "verde"
3) "vermelho"
Observação: No exemplo acima, "azul" foi adicionado duas vezes, mas devido à natureza única dos elementos do conjunto, a segunda inserção foi ignorada.
Um conjunto pode conter até 232 - 1 membros (4294967295, aproximadamente 4 bilhões).
ZSet (Conjunto Ordendao)
Assim como os sets comuns, os zsets são coleções de elementos do tipo string sem duplicatas. A diferença é que cada elemento está asssociado a um escore (pontuação) do tipo double, que é usado para ordenar os membros do conjunto em ordem crescente.
Os membros do zset são únicos, mas seus escores podem ser duplicados.
Comando zadd
Adiciona um elemento ao conjunto com um escore específico. Se o elemento já existir, seu escore é atualizado.
zadd chave escore membro
Exemplo
redis 127.0.0.1:6379> zadd usuarios 100 "joao"
(integer) 1
redis 127.0.0.1:6379> zadd usuarios 150 "maria"
(integer) 1
redis 127.0.0.1:6379> zadd usuarios 120 "carlos"
(integer) 1
redis 127.0.0.1:6379> zadd usuarios 100 "ana"
(integer) 1
redis 127.0.0.1:6379> ZRANGEBYSCORE usuarios 0 200
1) "joao"
2) "ana"
3) "carlos"
4) "maria"