[noções básicas do redis] dez tipos de dados do redis

prefácio

Aceite a sugestão do irmão Xu Zhu e uma série de artigos sobre redis será publicada no futuro

Este artigo explica as operações com alta taxa de utilização dos tipos de dados Redis7. Para todas as operações dos tipos de dados Redis7, consulte: Comandos | Redis

Artigo anterior: Conhecendo o redis [instalação, uso e desinstalação do redis] _Work hard and work hard blog do mlx-CSDN blog

Se você tiver alguma dúvida, pode me enviar uma mensagem privada a qualquer momento ~


Índice

chave redis (chave)

string redis (String)

Lista Redis (lista)

Hash Redis (Hash)

Coleção Redis (conjunto)

Coleção ordenada do Redis Zset (conjunto classificado)

Redis bitmap (bitmap)

Estatísticas de cardinalidade do Redis (HyperLogLog)

Redis Geoespacial (GEO)

Estilo Redis (Stream)

Campo de bits do Redis (campo de bits)


chave redis (chave)

Uma lista de comandos redis comumente usados:

A introdução detalhada de comandos comuns para chaves é a seguinte:
 keys * #View all keys in the current k= library

exists key #Julga se uma determinada chave existe (em instruções redis, 0 significa que 0 instruções são consultadas (a instrução que atende às condições não pode ser encontrada) e 1 significa que a consulta foi bem-sucedida)


type key #Ver o tipo de dados da chave atual


del key #Delete a chave especificada


unlink key #Exclusão sem bloqueio, apenas exclua as chaves dos metadados do keyspace, nenhuma exclusão real será executada em operações assíncronas subsequentes, no momento, precisamos apenas ter uma certa impressão desse comando e o apresentaremos mais tarde


chave ttl #Verifique quantos segundos a chave que consultamos expirou -1 significa que nunca expirará -2 significa que expirou


expire key seconds #Defina o tempo de expiração da chave


move key [0-15] #Move a chave do banco de dados atual para o banco de dados especificado, o redis tem 16 bancos de dados por padrão
select [0-15] #Switch database [0-15], o padrão é 0, o índice excede 0 Um intervalo de -15 relatará um erro


dbsize # Exibe o número de chaves no banco de dados atual


flushdb #Esvazie a biblioteca atual, use com cuidado


flushall #Esvazie 16 bancos de dados com cuidado

Considerando que esta operação é muito perigosa, não a demonstrarei aqui. 

help @ type para visualizar um tipo de documentação de ajuda

Notas: As instruções que operamos não diferenciam maiúsculas de minúsculas, mas as teclas que definimos manualmente diferenciam maiúsculas de minúsculas

string redis (String)

String é o tipo de dados mais básico em redis. Uma chave corresponde a um valor. Dados de string são binários seguros, o que significa que podem armazenar qualquer dado, incluindo arquivos jpg e

Instruções comuns em String:

 A introdução detalhada ao comando String type é a seguinte:
set key value

 

 get key # Obtém o valor correspondente à chave especificada

mset [chave1] [valor1] [chave2] [valor2] [chave3] [valor3] #Defina um ou mais pares chave-valor ao mesmo tempo


mget [key1] [key2] [key3] #Obtém os valores de várias chaves ao mesmo tempo


msetnx [key1] [value1] [key2] [value2] #Defina um ou mais pares chave-valor ao mesmo tempo. Deve-se garantir que nenhuma das chaves exista para ter sucesso

 

 

Obtém o intervalo especificado
getrange [key] 0 -1 # Obtém todos os valores desta chave
getrange [key] 0 3 # Obtém o valor desta chave entre o índice 0 e o índice 2
getrange [key] 1 xxx #Define o intervalo do intervalo especificado o valor dentro


 
Valor aumentar ou diminuir
incr [tecla] # incrementar número +1
incr [tecla] [incremento] # aumentar o inteiro especificado +incrementar 
decr [tecla] # diminuir o número -1
decr [tecla] [incremento] # diminuir o inteiro especificado - incremento 


Obtenha o comprimento da string e adicione o conteúdo
strlen [chave] # Obtenha o comprimento do valor correspondente à chave


append [key] [vale] #adicionar conteúdo de string
 

distribuído lock
setex [key] [expiration time] [value] # define a chave com o tempo de expiração, configuração dinâmica


setnx [chave] [valor] # Defina o valor da chave somente quando a chave não existir.


set [key] [value] get # Define o valor da chave dada para value e retorna o valor antigo da chave


getset [chave] [valor] # Defina o valor da chave fornecida como valor e retorne o valor antigo da chave

 

Cenários de aplicação:
1. Douyin gosta

2. Curta o artigo

Lista Redis (lista)

Introdução à lista

A estrutura de uma lista encadeada dupla, a capacidade é de 2 à 32ª potência menos 1 elemento, cerca de 4 bilhões, as principais funções são push/pop, etc., geralmente usadas em pilhas, filas, filas de mensagens e outros cenários. A lista corresponde a uma única chave com vários valores

Tanto a esquerda quanto a direita podem ser inseridas e adicionadas;

Se a chave não existir, crie uma nova lista encadeada;

Se a chave já existir, adicione o conteúdo;

Se todos os valores forem removidos, as chaves correspondentes desaparecem.

  • A camada inferior de sua lista é, na verdade, uma lista duplamente encadeada, que possui alto desempenho em ambas as extremidades da operação, e o desempenho dos nós no meio por meio de operações de subscrito de índice será ruim.
  • de
  • li; operações comuns de lista

Uma introdução comum às operações de lista 

lpush [chave] [valor] ... // Coloca os elementos no cabeçalho (esquerda) da lista


rpush [chave] [valor] ... // coloca os elementos na lista (à direita)


lrange [key] 0 -1 // Percorrer a lista da esquerda só pode percorrer da esquerda


lpop [key] // A pilha mais à esquerda é a primeira percorrida por lrange


rpop [chave] // A pilha mais à direita é a última percorrida por lrange


lindex [chave] [índice] // Obtém o valor pelo valor do índice

  
llen [chave] // Obtém o número de elementos


lrem [key] [num] [value] // exclui o valor num valor da esquerda para a direita


lrem [chave] 0 [valor] // Exclui todos os valores que são valorados da esquerda para a direita


ltrim [key] [start] [end] // intercepta o valor no intervalo especificado e depois o atribui a [key], ou seja, exclui o valor fora desse intervalo


rpoplpush [key1] [key2] [value] //Remove o último elemento da lista e adiciona este elemento ao primeiro de outra lista e retorna


lset [chave] [índice] [valor] //Altera o valor do índice da chave para valor


linsert [key] brfore/after [value1] [value2] // Adiciona um valor específico antes e depois de um valor existente na lista

A conta oficial do Cenário do aplicativo
 WeChat me incentiva a assinar os artigos do autor

Quando o autor que subscrevi publica dois novos artigos, os IDs correspondentes são 11 e 22 respetivamente

lpush likearticle:ljl 11 22

Desejo visualizar as informações dos dez primeiros artigos assinados:

lrange likearticle:ljl 0 9

Hash Redis (Hash)

breve introdução

Quando falamos em hash, nossa primeira reação deve ser hashmap em java. O hash em redis é semelhante ao hash em java, o modo kv permanece inalterado, mas v é um par chave-valor => Map<String,Map<Object,Object>

Lista de comandos comuns

Comandos comumente usados ​​em detalhes

hset/hget/hmset/hmget/hgetall/hdel //hset/get corresponde a obter valor e obter valor hmset/hmget é obter e obter vários valores hgetall é obter todos os valores hdel é excluir um valor 


hlen // Obtém todas as quantidades em uma chave


hexists [key] [k1] // veja se existe uma chave k1 na chave

 
hkeys [key] // Obtém todas as chaves na chave


hvals [chave] // Obtém todos os valores na chave


hincrby [key] k1 [num] // O valor de k1 na chave aumenta em num integer


hincrbyfloat [chave] k1 [num] // O valor de k1 na chave aumenta em num decimais

 


hsetnx [chave] k1 [valor] // Não há atribuição, há inválido

Cenários típicos de aplicação de hash:

Adoção antecipada do carrinho de compras

Coleção Redis (conjunto)

breve introdução

 Quando pensamos em set, a primeira coisa que pensamos é o hashset em java, a coleção de set em redis, os valores no set não devem ser repetidos, e a forma como ele armazena os dados é single-value multi-value

comando comum

Introdução detalhada dos comandos comumente usados 

Membro-chave SADD ... // adicionar elemento


Chave SMEMBERS // percorre todos os elementos da coleção


Membro da chave SISMEMBER // determina se um elemento está no conjunto

Membro da chave SREM ... // exclui elemento


Chave SCARD // Obtém o comprimento da coleção


Tecla SRANDMEMBER m // Seleciona aleatoriamente m da coleção de conjuntos Se exceder o número máximo, todos serão retirados  

Se o valor escrito for um número negativo, como -3, significa que 3 precisa ser retirado, mas pode haver valores duplicados que não serão excluídos


Tecla SPOP m // Abre aleatoriamente um elemento da coleção, remove um e exclui outro


SMOVE key1 key2 um valor existente em key1 // Atribui um valor existente de key1 a key2

 

definir operação

SDIFF keyA keyB // A - B é uma coleção de elementos que pertencem a A mas não a B


SUNION keyA keyB // AUB é a coleção mesclada de elementos pertencentes a A ou B


SINTER keyA keyB // A ∩ B pertence tanto a A quanto a B


SINTERCARD numkeys keyA keyB [LIMIT limit] // Também busca interseção, não retorna o conjunto de resultados, retorna apenas a cardinalidade do resultado limite é usado para limitar a cardinalidade da interseção, se o resultado exceder o número limitado de limite durante a operação, ele retorna diretamente

Cenários Típicos de Aplicação

1. loteria vx

2. Vx círculo de amigos definidos como amigos

3. Tweet pessoas que você pode conhecer no QQ

Coleção ordenada do Redis Zset (conjunto classificado)

Introdução ao zset

Zset adiciona um campo como pontuação com base no conjunto. É precisamente por causa desse campo que o zset pode classificar elementos com base na satisfação das características do conjunto

Instruções comumente usadas sobre zset

Introdução detalhada aos comandos comuns do zset

Membro de pontuação chave ZADD [ membro de pontuação ] // adicionar elemento


ZRANGE key start stop [WITHSCORES] // Retorna a ordem das pontuações dos elementos de pequeno para grande Retorna todos os elementos com índices do início ao fim


Tecla ZREVRANGE 0 - 1 [WITHSCORES] // ordem inversa


Tecla ZRANGEBYSCORE min max [WITHSCORES] [LIMIT offset count] // Obtém os elementos do intervalo de pontuação especificado (min, max) excluindo o limite é o limite de retorno, quantos retornar 


Membro da chave ZSCORE // Obtém a pontuação do elemento


Chave ZCARD // Obtém o número de elementos na coleção


Chave ZREM O valor correspondente a uma determinada pontuação // exclui o elemento


Membro de incremento de chave ZINCRBY // aumenta a pontuação de um elemento


Tecla ZCOUNT min max // Obtém o número de elementos dentro do intervalo de pontuação especificado


ZMPOP numkeys key [key …] <MIN | MAX> [COUNT count] // Extrai uma ou mais chaves do primeiro conjunto classificado não vazio na lista de nomes de chaves, que são pares de pontuação de membro


Valor dos valores-chave do ZRANK // obtém o valor do subscrito


Valores de chave ZREVRANK // Obtém valores subscritos na ordem inversa   

 

Cenário de aplicação:
Classifique os produtos de acordo com o volume de vendas

  

Redis bitmap (bitmap)

O conceito de bitmap

Descrição: um tipo de dados de estado binário estatístico implementado com o tipo String como a estrutura de dados subjacente

Um bitmap é essencialmente uma matriz , que é uma operação bit a bit baseada no tipo de dados String. A matriz consiste em bits, cada um dos quais corresponde a um deslocamento (nós o chamamos de índice). O número máximo de bits suportados pelo Bitmap é de 2^32 bits, o que pode economizar muito espaço de armazenamento. Usando 512M de memória, ele pode armazenar até 4,29 bilhões de bytes de informação (2^32 = 4294967296)

Lista de comandos comuns

Comandos comumente usados ​​em detalhes

SETBIT key offset value // Define o valor do primeiro offset para valor, o valor só pode ser 0 ou 1, o offset começa em 0


Deslocamento da chave GETBIT // Obtém o valor do bit de deslocamento


Tecla STRLEN // Descubra quantos bytes têm mais de 8 bits e, em seguida, expanda a capacidade de acordo com 8 bits por byte


Chave BITCOUNT // Descubra quantos 1s estão contidos na chave


BITOP e destKey key1 key2 // Faz uma união lógica de uma ou mais chaves e salva o resultado em destkey 


As seguintes operações são as mesmas e não serão repetidas aqui ~ 

BITOP ou destKey key1 key2 // Faça OR lógico para uma ou mais chaves e salve o resultado em destkey 

BITOP XOR destKey key1 key2 // Faz XOR lógico para uma ou mais chaves e salva o resultado em destkey 
BITOP NOT destKey key1 key2 // Faz NOT lógico para uma ou mais chaves e salva o resultado em destkey

 Cenário de aplicativo típico:
o cenário de aplicativo de login é muito adequado para bitmap

365 dias por ano, quantos dias são assinados todos os dias?

por ano

Estatísticas de cardinalidade do Redis (HyperLogLog)

  introdução básica

O algoritmo de estimativa de cardinalidade da função de estatísticas de desduplicação é HyperLogLog, e a cardinalidade é o número real de um conjunto de dados após a desduplicação. As estatísticas de cardinalidade são usadas para contar o número de elementos únicos em uma coleção, ou seja, o cálculo dos elementos restantes após a desduplicação da coleção só precisa gastar memória e pode registrar a cardinalidade de 2 à 64ª potência = 18446744073709551616 elementos diferentes . No entanto, como o HyperLogLog calcula apenas a cardinalidade com base nos elementos de entrada e não armazena os próprios elementos de entrada, o HyperLogLog não pode retornar os elementos individuais da entrada como um conjunto.

comando comum

 pfadd hyl1 1 1 1 1 2 3 6
pfadd hyl2 2 4 4 4 6 7 8 9
pfcount hyl2 //Calcular o número de elementos em hyl2 após a desduplicação
pfmerge distResult hyl2 hyl1 //Mesclar os elementos em hyl2 e hyl1 e desduplicar
pfcount disResult / /Calcular o número de elementos após a desduplicação em hyl2

Cenário de Aplicação

Esquema estatístico de redis UV da página inicial do site da Tmall

Redis Geoespacial (GEO)

breve introdução

A localização geográfica na Terra é representada por latitude e longitude bidimensionais, faixa de longitude (-180, 180), faixa de latitude (-90, 90), desde que determinemos a latitude e a longitude de um ponto, podemos obter sua posição na terra.

Por exemplo, Didi Taxi, a operação mais intuitiva é registrar e atualizar a localização de cada carro em tempo real.
Então, quando queremos encontrar um carro, pesquisamos no banco de dados a latitude e longitude do veículo a r quilômetros de nós (coordenadas x0, y0) e
copie-o diretamente no mapa. :
escolha o sistema de coordenadas

comando comum

 Detalhes de designação comumente usados 

GEOADD city 116.403963 39.915119 "Tiananmen" 116.403414 39.924091 "Forbidden City" //GEOADD adiciona coordenadas de latitude e longitude


ZRANGE city 0 -1 // Ver (aparecerão caracteres chineses distorcidos)


redis -cli -a 111111 -p 6379 -- raw // Resolve caracteres chineses distorcidos


GEOPOS city Tiananmen Forbidden City // GEOPOS retorna a latitude e longitude
// GEOHASH retorna a representação geohash das coordenadas (codificação base32)


GEOHASH cidade Tiananmen Cidade Proibida


//GEODIST retorna a distância entre dois locais (m km )
GEODIST city Tiananmen Great Wall km
//GEORADIUS considera a latitude e longitude fornecidas como centro, retorna os elementos de localização contidos na chave e a distância do centro não excede a distância máxima dada Todos os elementos posicionais.
GEORADIUS city 116.418017 39.9144444 10 km com distância com contagem de coordenadas 10 desc
//GEORADIUSBYMEMBER Encontre os elementos dentro do intervalo especificado, o ponto central é determinado pelo elemento de posição fornecido
GEORADIUsbymember city Tiananmen 10 km com distância com contagem de coordenadas 10 com hash

Cenário de Aplicação

  • Restaurantes e hotéis perto de Meituan
  • Lojas perto do mapa de Gaode

Estilo Redis (Stream)

Vou organizar o conteúdo do fluxo em um blog separado ~

redis [stream]: uma introdução detalhada aos tipos de dados de stream redis

Campo de bits do Redis (campo de bits)

introdução básica

Objetivo: Em uma palavra, uma string Redis é considerada como uma matriz composta de bits binários e pode endereçar e modificar a largura de bit de comprimento variável e qualquer campo de bit inteiro especificado sem alinhamento de byte

As duas funções são as seguintes:

  • modificação do campo de bits
  • controle de estouro

 gramática básica

Acho que você gosta

Origin blog.csdn.net/m0_65431718/article/details/130768211
Recomendado
Clasificación