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
Coleção ordenada do Redis Zset (conjunto classificado)
Estatísticas de cardinalidade do Redis (HyperLogLog)
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= libraryexists 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 cuidadoConsiderando 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 gosta2. 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 listaA conta oficial do Cenário do aplicativo
WeChat me incentiva a assinar os artigos do autorQuando 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álidoCená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 conjuntoMembro 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 retiradosSe 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 diretamenteCená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 destkeyCenário de aplicativo típico:
o cenário de aplicativo de login é muito adequado para bitmap365 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 hyl2Cená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 hashCená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