instalar o Redis no docker com o comando docker pull redis
, e depois de executar utilizar o comando redis-cli
SET <chave> <valor>
exemplo:
SET "resultado" 100
GET <chave>
exemplo:
GET "resultado"
KEYS <pattners>
exemplo:
KEYS result*
SET <chave> <valor> <chave> <valor> <chave> <valor>
exemplo:
SET "resultado_1" 100 "resultado_2" 200 "resultado_3" 300
Para adicionar vários registro seguimos o seguindo padrão: HSET <hash> <chave> <valor>
, o hash e a chave serão usadas para identificação do valor.
exemplo:
HSET "2022-07-12" "disciplina" "java"
HSET "2022-07-12" "horario" "14h"
HSET "2022-08-30" "disciplina" "react"
Para buscar um hash usamos o HGET
, ele retornará os valores de acordo com as informações do hash e da chave no seguinte padrão: HGET <hash> <chave>
exemplo:
HGET "2022-07-12" "disciplina"
Resultado:
"2022-07-12" "disciplina" "java"
Para Deletar utiliza-se o comando com a sintaxe: HDEL <hash> <chave>
exemplo: HDEL "2022-08-30" "disciplina"
Para trazer todos os dados de uma chave uliliza-se os HGETALL
para adicionar multiplos registros hash de uma só vez, utiliza-se a sintaxe: HMSET <hash> <chave> <valor> <chave> <valor> <chave> <valor>
exemplo:
HMSET <hash> <chave> <valor> <chave> <valor> <chave> <valor>
HMSET "2022-07-01" "Nome" "Diego" "Sobrenome" "Couto" "github" "dccouto"
Para descolbri o tipo da <chave>
utliza-se o comando TYPE <chave>
- O
SETBIT
permite que adicione informação booleanas a um registro, a sintaxe éSETBIT <hash> <chave_maior_que_0> <valor_booleano>
exemplo:
SETBIT acesso:2022-07-12 10 1
- O
GETBIT
permite que adicione informação booleanas a um registro, a sintaxe éSETBIT <hash> <chave_maior_que_0> <valor_booleano>
exemplo:
GETBIT acesso:2022-07-12 10 1
Caso a chave não recebeu um valou 1 ela automaticamente será 0 quando realizar o GETBIT
Para pegar o total de hashs que tem o bit setado com 1, utiliza-se o comando BITCOUNT <hash>
exemplo:
BITCOUNT acesso:2022-07-12
Para realizar operações com bits, utilizasse o comando BITOP
Para aplicar operações(BITOP) de '&' utiliza-se o AND, de acordo com a seguinte sintasse ````BITOP AND <nova_hash_do_resultado> <hash1_que_ira_aplicar_o_&> <hash2_que_ira_aplicar_o_&>```
exemplo:
//definindo acesso a sala 1 e 2
SETBIT acesso_sala:2022-07-12 1 1
SETBIT acesso_sala:2022-07-13 1 1
SETBIT acesso_sala:2022-07-13 2 1
//fazendo o AND do dia 12 e 13
BITOP AND acesso_sala:2022-07-12-e-13 acesso_sala:2022-07-12 acesso_sala:2022-07-13
//verificandoo reusltado da operação AND na qual irá mostrar qual a sala que teve acesso no dia 12 e 13
GETBIT acesso_sala:2022-07-12-e-13 1
(integer) 1 //Teve Acesso a sala nos 2 dias
GETBIT acesso_sala:2022-07-12-e-13 2
(integer) 0 //Não teve Acesso a sala nos 2 dias
Para aplicar operações(BITOP) de '||' utiliza-se o OR, de acordo com a seguinte sintasse ````BITOP OR <nova_hash_do_resultado> <hash1_que_ira_aplicar_o_OR> <hash2_que_ira_aplicar_o_OR>```
exemplo:
//definindo acesso a sala 1 e 2
SETBIT acesso_sala:2022-07-12 1 1
SETBIT acesso_sala:2022-07-13 1 1
SETBIT acesso_sala:2022-07-13 2 1
//fazendo o OR do dia 12 e 13
BITOP OR acesso_sala:2022-07-12-OU-13 acesso_sala:2022-07-12 acesso_sala:2022-07-13
//verificandoo reusltado da operação OR na qual irá mostrar qual a sala que teve acesso no dia 12 ou 13
GETBIT acesso_sala:2022-07-12-OU-13 1
(integer) 1 //Teve Acesso a sala no dia 12 ou no dia 13
GETBIT acesso_sala:2022-07-12-OU-13 2
(integer) 1 //Teve Acesso a sala no dia 12 ou no dia 13
Para expirar/deletar registros do banco do Redis, a sintaxe é EXPIRE <chave> <tempo_em_segundos>
exemplo:
EXPIRE "sessao:usuario:1" 1800
Para checar quanto tempo falta pra expirar usar o comando TTL <chave>
exemplo:
TTL "sessao:usuario:1"
Buscar sorteios da Mega-Sena que ocorreram nos dias terminados em "3" ou em "7".
<ip> KEYS "resultado:?3-??-????:megasena"
1) "resultado:03-05-2015:megasena"
<ip>KEYS "resultado:?7-??-????:megasena"
1) "resultado:17-05-2015:megasena"
Mas queremos pesquisar os dois ao mesmo tempo, então usamos "[]" (colchetes):
<ip> KEYS "resultado:?[37]-??-????:megasena"
1) "resultado:03-05-2015:megasena"
2) "resultado:17-05-2015:megasena"
- Para incrementar em +1, utilize o seguinte padrão:
INCR <chave>
. E para decrementar em -1 utilize oDECR <chave>
- Para incrementar em x valor inteiro , utilize o seguinte padrão:
INCRBY <chave> <valor>
. E para decrementar em x valor inteiro utilize oDECRBY <chave> <valor>
- Para incrementar em x valor float , utilize o seguinte padrão:
INCRBYFLOAT <chave> <valor>
. E para decrementar em x valor float utilize oDECRBYFLOAT <chave> <valor>
Para exemplificar irei tratar como uma lista de ultimas nootícias, onde as 3 ultimas notícias serão mantidas no Redis na seguinte regra: AS notícias recem inseridas ficaram no top, e só serão mantidas 3 notícias na lista.
Para conseguir inserir uma notícia na lista e ela sendo a primeira, utiliza-se o comando LPUSH
onde 'L' significa Left (primeira da lista) e 'PUSH' é o comando de inserir.
A sintaxe é LPUSH <chave> <valor>
Exemplo:
LPUSH ultimas-noticias "Estudo de Redis na segunda-feira."
LPUSH ultimas-noticias "Estudo de Java na terça-feira."
LPUSH ultimas-noticias "Estudo de AWS na quarta-feira."
LPUSH ultimas-noticias "Estudo de Kafka na quinta-feira."
de acordo com o exemplo proposto, para manter as três últimas notícias na lista de noticícas, é necessário manter as notícias da posição 0 a posição 2. O comando para cortar tudo que não estiver no intervalo desejado é o LTRIM
. A sintexe é LTRIM <chave> <posição_inicial , posição_final>
Exemplo:
LTRIM ultimas-noticias 0,2
Para pegar um elemento da lista pelo index, utiliza-se o LINDEX
de acordo com a seguinte sintaxe: LINDEX <chave> <index>
exemplo:
LINDEX ultimas-noticias 1
resultado: "Estudo de Java na terça-feira."
Para pegar o length da lista, utiliza-se o LLEN
de acordo com a seguinte sintaxe: LLEN <chave>
exemplo:
LLEN ultimas-noticias
Para pegar o range de elementos da lista, utiliza-se o LRANGE
de acordo com a seguinte sintaxe: LRANGE <chave> <posição_inicial , posição_final>
exemplo:
LRANGE ultimas-noticias 1,2
Resultado: "Estudo de Java na terça-feira."
"Estudo de AWS na quarta-feira."
Para exemplificar irei tratar como uma fila para atendimento que será mantidaa no Redis na seguinte regra: O primeiro a entrar na fila é o primeiro a ser atendido.
Para adicionar um elemento no final da fila utiliza-se o comando RPUSH
, a sintaxe do comando é: RPUSH <chave> <valor>
Exemplo:
RPUSH "fila:confirma-email" "[email protected]"
RPUSH "fila:confirma-email" "[email protected]"
RPUSH "fila:confirma-email" "[email protected]"
RPUSH "fila:confirma-email" "[email protected]"
Para pegar e retitar o primeiro elemento da fila utiliza-se o LPOP
. A sintaxe é LPOP <chave>
Exemplo:
LPOP "fila:confirma-email"
Resultado: "[email protected]"
Qual tenta buscar alguém na fila e não tem ninguém e repete esse processo diversas vezes com o LPOP "fila:confirma-email"
ocorre o provlema de ocupar processamento com diversas checagem na fila sem ter ninguém, pra resolver esse problemas podemos fazer uma busca na fila estipulando o tempo de espera com o comando BLPOP
, com esse comando definimos um tempo em que ele irá aguardar algum dado chegar na fila e com isso não irá travar processamento. A sintaxe do comnado é: BLPOP <chave> <tempo_em_segundos> (se colocar 0 é eterno)
Exemplo:
BLPOP "fila:confirma-email" 30
Resultado: "[email protected]"
(12segundos_depois)
O conjunto não possui elementos repetidos, para adicionar um item em um conjunto, utiliza-se SADD
(como se fosse um add no SetList). A sintaxe do comando é: SADD <chave> <valor>
Exemplo:
SADD "conexões-do-linkedin:Diego" "Julia"
Resultado: (integer) 1
SADD "conexões-do-linkedin:Diego" "Ana"
Resultado: (integer) 2
O comando para pegar o número de elementos que tem no conjunto é o SCARD
,(card de cardinalidade) a sintaxe é SCARD <chave>
Exemplo:
SCARD "conexões-do-linkedin:Diego"
Resultado: (integer) 2
O comando para listar os membros do conjunto (não é ordenada) é o SMEMBERS
, a sintaxe é SMEMBERS <chave>
Exemplo:
SMEMBERS "conexões-do-linkedin:Diego"
Resultado: 1) Julia
2) Ana
O comando para verificar se o valor já é um membro do conjunto é o SISMEMBER
, a sintaxe é SISMEMBER <chave> <valor>
Exemplo:
SISMEMBER "conexões-do-linkedin:Diego" Karem
Resultado: 0
SISMEMBER "conexões-do-linkedin:Diego" Julia
Resultado: 1
O comando para remover um membro do conjunto é o SREM
, a sintaxe é SREM <chave> <valor>
Exemplo:
SREM "conexões-do-linkedin:Diego" Karem
Resultado: 0
O comando para descobrir a intersecção(elementos que se repetem nos 2 conjuntos) entre dois conjuntos é SINTER
, a sintaxe é SINTER <chave> <chave>
Exemplo:
SINTER "conexões-do-linkedin:Diego" "conexões-do-linkedin:Juliana"
Resultado: 1) Clara
O comando para descobrir a diferença(elementos que não se repetem nos 2 conjuntos) entre dois conjuntos é SDIFF
, a sintaxe é SDIFF <chave> <chave>
Exemplo:
Fulano = (Zé, Beltrano, Deltrano)
Ciclano = (Zé)
SINTER "conexões-do-linkedin:Fulano" "conexões-do-linkedin:Ciclano"
Resultado: 1) Beltrano
2) Deltrano
O comando para descobrir a união entre dois conjuntos é SUNION
, a sintaxe é SUNION <chave> <chave>
Exemplo:
Fulano = (Zé, Beltrano, Deltrano)
Ciclano = (Zé)
SUNION "conexões-do-linkedin:Fulano" "conexões-do-linkedin:Ciclano"
Resultado: 1) Beltrano
2) Deltrano
3) Zé