Redis estruturas de dados comumente usadas e cenários de aplicativos para hematêmese

1. Tipo de dados String:

Operações comuns para strings:

  • SET key value Armazenar pares de valores-chave, SET substitui valores antigos, independentemente do tipo
  • MSET key value [key value ...] Pares de valores-chave da cadeia de armazenamento em lote
  • SETNX key value Armazene um par de valores-chave inexistente, se a chave existir, não faça nada
  • GET key Obtenha o valor correspondente à chave de acordo com a chave
  • MGET key [key ...] Obter pares de valores-chave de sequência em lotes
  • DEL key Exclua o par de valores-chave correspondente à chave
  • EXPIRE key seconds Defina o tempo válido para o valor da chave fornecido

Adição e subtração atômica

  • INCR key Adicione 1 ao número correspondente ao valor da chave
  • DECR key Diminua o valor armazenado pela chave em 1
  • INCRBY key increment Adicione incremento à matriz de armazenamento de chaves
  • DECRBY key increment Subtrair o incremento da matriz armazenada pela chave

Cenário de aplicação:

  • cache-valor único: SET key value,GET key

  • Objeto de cache:
    SET user:1 value(json字符串);
    depósito: MSET user:1:name zhangsan user:1:age 10
    Tomar: MGET user:1:name user:1:age
    melhor do que o formato JSON para facilitar a manipulação único atributo, que um melhor desempenho, a escolha idealHASH

  • Bloqueios distribuídos:
    SETNX product:10001 true// Envie 1 para indicar que o bloqueio foi bem-sucedido, não o utilize se houver desvantagens
    SETNX product:10001 true// Envie 0 para indicar que o bloqueio falhou
    DEL product:10001// Libere o bloqueio
    SET product:10001 true ex 10 nx// Impeça que o programa seja encerrado inesperadamente, resultando em um impasse

  • O uso de
    Conta pública WeChat lendo cenários de uso
    estatísticas de leitura de contador no Redis:

    • INCR article:readcount:{文章Id} Estatísticas de leitura de artigos
    • GET article:readcount:{文章Id}
  • O ID exclusivo do sistema distribuído gera
    INCRBY orderId 1000redis para gerar o número de série e melhorar o desempenho.


Estrutura 2.HASH

Operações comuns

  • HSET key field value // Armazena o valor da chave de uma chave da tabela de hash
  • HSETNX key field value // Armazena o valor da chave de uma chave de tabela de hash inexistente
  • HMSET key field value [field value ...] Armazenar vários pares de valores-chave em uma chave de tabela de hash
  • HGET key field Obter o valor da chave de um campo em uma tabela de hash
  • HMGET key field [field ...] Obter os valores-chave de vários campos na chave da tabela de hash
  • HDEL key field [field ...] Exclua o valor da chave do campo na chave da tabela de hash
  • HLEN key O número de campos na chave da tabela de hash
  • HGETALL key Retornar todos os pares de valores-chave na chave da tabela de hash
  • HINCRBY key field increment Adicione incremento incremental ao valor do campo campo na chave da tabela de hash

Cenário de aplicação

  • Armazenamento de objetos
    HSET user:10001 name zhangsan age 10// Definir propriedades do objeto
    HGET user:10001 name age// Obter informações sobre atributos

  • Cenário do carrinho de compras
    Cena do carrinho de compras
    de comércio eletrônico Estrutura de dados do carrinho de compras de comércio eletrônico:

    • Use o ID do usuário como chave
    • O ID do produto é um campo
    • O número de produtos é valor

    Operação do carrinho de compras:

    • Adicionar produto-> HSET cart:1001 10088 1
    • Aumente o número->HINCRBY cart:1001 10088 1
    • Número total de produtos->HLEN cart:1001
    • Excluir produto HDEL cart:1001 10088
    • Obter todos os itens no carrinho de compras->HGETALL cart:1001

Estrutura de dados 3.List

Diagrama da estrutura da lista

Comandos comuns

  • LPUSH key value [value ...] Inserir um ou mais valores no cabeçalho da lista de chaves (mais à esquerda)
  • RPUSH key value [value ...] Inserir um ou mais valores no cabeçalho da lista de chaves (extrema direita)
  • LPOP key Remova e retorne o elemento principal da lista de chaves
  • RPOP key Remova e retorne o elemento final da chave
  • LRANGE key start stop Retorna o elemento do intervalo especificado na chave, o deslocamento do intervalo é especificado por start e stop
  • BLPOP key [key ...] timeoutUm elemento aparece da cabeça da chave.Se não houver um elemento na chave, ele irá bloquear e aguardar, bloquear o tempo limite, se o tempo limite for 0, significa bloquear o tempo todo
  • BRPOP key [key ...] timeoutUm elemento aparece no final da tabela de chaves; se não houver nenhum elemento na chave, ele bloqueará a espera, bloqueará o tempo limite; se o tempo limite for 0, ele sempre bloqueará

Cenário de aplicação

  • Estruturas de dados comuns

    • Pilha = LPUSH + LPOP-> FILO avançado
    • Fila = LPUSH + RPOP-> FIFO, primeiro a entrar, primeiro a sair
    • MQ de bloqueio (fila de bloqueio) = LPUSH + BRPOP

  • Fluxo de mensagens da conta pública Weibo e WeChat

Diagrama esquemático do fluxo de mensagens Weibo e WeChat
O exemplo se concentra no uso de pneus sobressalentes para números públicos WeChat e do Mac Talk em Redis:

  • O Mac Talk divulgou a mensagem ID 10018-> LPUSH msg:{订阅人Id} 10018
  • O pneu sobressalente disse que o carro lançou a mensagem ID 10019->LPUSH msg:{订阅人Id} 10019
  • Veja as últimas notícias inscritas, como 6->LRANGE msg:{订阅人Id} 0 5

Estrutura 4.SET

Comandos comuns

  • SADD key member [member ...] Coloque um ou mais membros na chave, ignore se o elemento existe
  • SREM key member [member ...] Remova um ou mais membros da chave de coleção
  • SMEMBERS key Retornar todos os elementos na chave de coleção
  • SCARD key O número de elementos na chave de coleção
  • SISMEMBER key member Determinar se o membro é um elemento na chave
  • SRANDMEMBER key [count] Contar elementos de contagem aleatoriamente da chave, os elementos não são excluídos da chave
  • SPOP key [count] Pegue aleatoriamente os elementos de contagem da chave e exclua os elementos da chave
  • SINTER key [key ...]Operação de interseção
  • SINTERSTORE destination key [key ...] Armazene o resultado da interseção no novo destino de coleção
  • SUNION key [key ...] Operação da União
  • SUNIONSTORE destination key [key ...]Salve o resultado da união no novo destino
    - SDIFF key [key ...]operação de diferença,

Cenário de aplicação

  • Modelo de loteria
    Modelo de loteria
    O uso de loterias participantes no Redis no exemplo:
    • Clique para participar do sorteio e participar da coleção-> SADD key {userId}
    • Veja todos os usuários participantes do sorteio->SMEMBERS key
    • Vencedores do sorteio->SRANDMEMBER key [count]/SPOP key [count]

  • Curta, siga e colecione no Weibo e WeChat

Curta e siga o modelo de coleção
O uso do modelo similar no Redis no exemplo:

  • Curtir->SADD like:{消息id} {用户id}

  • Ao contrário->SREM like:{消息id} {用户id}

  • Verifique se o usuário gosta->SISMEMBER like:{消息id} {用户id}

  • Obtenha uma lista de usuários que gostaram->SMEMBERS like:{消息id}

  • Obter o número de curtidas->SCARD like:{消息id}

  • WeChat Weibo segue o modelo:
    Modelo de atenção WeChat
    Exemplo WeChat segue o modelo usado no Redis:

    • Pessoas que Zhang San segue->zhangsanSET->{lisi,sima,luban}
    • Pessoas que Li Si segue->lisiSET->{zhangsan,sima,luban,qiaofeng}
    • Pessoas que Wang Wu segue->wangwuSET->{zhangsan,lisi,luban,qiaofeng,duanyu}
    • Pessoas com quem Zhang San e Li Si estão preocupadas->SINTER zhangdanSET lisiSET
    • Joe Smith também preocupados com a do povo atenção Doe -> Lista zhangsanSET para cada membro da página de seguimento ao juiz SISMEMBER simaSET lisi,SISMEMBER lubanSET lisi
    • Pessoas que Zhang San pode conhecer->SDIFF lisiSET zhangsanSET
  • Triagem de mercadorias da plataforma de comércio eletrônico de operação coletiva: o uso das
    Triagem de mercadorias
    condições de triagem de mercadorias em redis:

    • SADD brand:HUAWEI p30
    • SADD brand:xiaomi mi-6X
    • SADD brand:IPhone iphone8
    • SADD os:android p30 mi-6X
    • SADD cpu:brand:intel p30 mi-6X
    • SADD ram:8G p30 mi-6X iphone8
    • SINTER os:android cpu:brand:intel ram:8G->{p30 mi-6X}

Estrutura de dados SortedSet

Comandos comuns

  • ZADD key score member [[score member] [score member] ...] Adicione elementos com pontuações à chave de combinação ordenada
  • ZREM key member [member ...] Remover chave da coleção solicitada
  • ZSCORE key member Retorna o valor da pontuação dos membros na chave ordenada
  • ZINCRBY key increment member Adicione o incremento à pontuação do elemento membro na chave do conjunto ordenado
  • ZCARD key Retorna o número de elementos da chave ordenada
  • ZRANGE key start stop [WITHSCORES] Obter elementos da chave de conjunto ordenada do início do subscrito para parar o subscrito em ordem positiva
  • ZREVRANGE key start stop [WITHSCORES] Obtenha os elementos da chave do conjunto ordenado do início subscrito para parar o subscrito na ordem inversa
  • ZUNIONSTORE destination numkeys key [key ...] Cálculo da União
  • ZUNIONSTORE destination numkeys key [key ...] Cálculo de interseção

Cenário de aplicação

  • Cena do placar
    Classificação
    O uso do placar do Weibo em Redis:
    • Clique em Notícias->ZINCRBY hotNews:20190819 1 守护香港
    • Mostrar os dez melhores do dia->ZREVRANGE hotNews:20190819 0 10 WITHSCORES
    • Lista de pesquisa de sete dias->ZUNIONSTORE hotNews:20190813-20190819 7 hotNews:20190813 hotNews:20190814 hotNews:20190815....hotNews:20190819
    • Mostre o top 10 no dia 7->ZREVRANGE hotNews:20190813-20190819 0 10 WITHSCORES

Insira a descrição da imagem aqui

Publicado 41 artigos originais · Gostei 14 · Visitantes 10.000+

Acho que você gosta

Origin blog.csdn.net/Yunwei_Zheng/article/details/104976637
Recomendado
Clasificación