Fundamentos de Bitmaps Redis
Redis Bitmaps é outra maneira de tratar os dados do tipo string como uma coleção de bits ou vetores de bits. Portanto, a estrutura de dados subjacente dos bitmaps é uma string em que uma string é armazenada usando uma matriz de zeros e aqueles na memória do computador. Redis Bitmaps suporta a recuperação e a alternância do valor de bit de um determinado deslocamento em um bitmap. Além disso, ele fornece comandos para executar as operações bitwise, como e, ou não, e xor em várias strings que são armazenadas nas chaves determinadas.
Como mencionado, um valor de string que é armazenado no banco de dados Redis pode ser tratado como um bitmap. Podemos executar as operações bitwise em várias strings Redis armazenadas nas teclas dadas da seguinte forma:
E operação
A figura a seguir ilustra como funciona a operação e a operação em duas cordas dadas. Neste exemplo, usaremos as cordas A e B para realizar o bit e operação.
Ou operação
Vamos realizar o bitwise ou operação nas mesmas duas seqüências do exemplo anterior.
Como mostrado, o bitmap resultante é 1000011, que é a representação ASCII da letra C.
Operação XOR
A figura a seguir explica claramente como a operação XOR bit netwise opera nas mesmas duas seqüências:
Não operação
O operador NON é usado como um operador unário nas operações Bitwise Redis. Portanto, é preciso apenas um valor de string como entrada.
A operação Bitwise Not On String A retorna o valor \ xbe hexadecimal e nenhum valor de ASCII imprimível associado.
O comando bitop
O comando bitop foi introduzido pela Redis para executar as operações anteriores discutidas em uma ou várias strings (bitmaps) armazenadas nas chaves especificadas. Este comando opera com a complexidade do tempo O (n), onde n é o comprimento da corda mais longa na comparação que é bastante mais lenta que as outras operações de bitmap. Este comando executa a operação especificada e armazena o bitmap resultante (string) na chave de destino especificada.
A sintaxe do comando bitop é a seguinte:
Bitop bitise_operation destino_key bitmap_key [bitmap_key…]
O comando bitop retorna um valor inteiro que é o tamanho do bitmap resultante. O tamanho do bitmap resultante é igual ao tamanho do bitmap de entrada mais longo.
Em alguns casos, os bitmaps de entrada contêm strings em diferentes tamanhos. Então, o comando Bitop trata todas as outras seqüências de entrada que são mais curtas que as mais longas, como zero, com o tamanho da corda mais longa. Da mesma forma, as teclas de bitmap inexistentes são consideradas strings de byte zero com tamanhos iguais à sequência de entrada mais longa.
Caso de uso - usuários ativos de um site em um determinado dia
Vamos supor que o proprietário de um site esteja interessado nos usuários ativos que estão conectados a um site, semanalmente. Nesse caso, um bitmap é um candidato ideal para armazenar as visitas diárias. Cada usuário pode ser representado usando um deslocamento no bitmap. Além disso, bitmaps separados podem ser usados por dia com um ID exclusivo, como mostrado na ilustração a seguir:
Vamos criar bitmaps para os três dias anteriores (domingo, segunda e terça -feira) que mantêm o status da visita de cada usuário. O comando set pode ser usado para criar cada bitmap da seguinte forma:
Criamos o primeiro bitmap que é identificado pela chave Visite: 2022: 08: 4: sol. Então, o primeiro usuário é identificado pelo deslocamento 0. Vamos supor que o usuário associado ao ID do usuário 0 visitou o site no domingo. Portanto, o deslocamento 0 é definido como 0 da seguinte forma:
Visita do setbit: 2022: 08: 4: Sun 0 1
Da mesma forma, o status da visita dos usuários associados aos IDs de usuário 1, 2, 3 e 4 é definido de acordo.
Visita do setbit: 2022: 08: 4: Sun 1 0
Visita do setbit: 2022: 08: 4: Sun 2 1
Visita do setbit: 2022: 08: 4: Sun 3 0
Visita do setbit: 2022: 08: 4: Sun 4 0
Vamos inspecionar os valores de bits para cada usuário usando o comando getbit da seguinte forma:
Visita Getbit: 2022: 08: 4: Sun 0
Visita Getbit: 2022: 08: 4: Sun 1
Visita Getbit: 2022: 08: 4: Sun 2
Visita Getbit: 2022: 08: 4: Sun 3
Visita Getbit: 2022: 08: 4: Sun 4
Da mesma forma, podemos criar os bitmaps para armazenar as visitas ao usuário na segunda e terça -feira que são identificadas pelas chaves Visite: 2022: 08: 5: seg e Visite: 2022: 08: 6: Ter.
O interesse do proprietário do site é levar os usuários que visitaram o site pelo menos um dia a partir de domingo, segunda ou terça -feira. Este tipo de informação pode ser obtido usando o comando bitop da seguinte maneira. A operação ou bit a bit é ideal para verificar os usuários que visitaram o site pelo menos um dia em relação aos três dias.
BITOP ou ATLEASEONEVISITUSER Visita: 2022: 08: 4: Sun Visite: 2022: 08: 5: Mon Visite: 2022: 08: 6: Ter
Realizamos o bitwise ou a operação no anterior criou três bitmaps. O bitmap resultante é armazenado na chave pelo menos oVisitUser. Vamos verificar a string ou bitmap resultante usando o comando get da seguinte forma:
Obtenha atleaseOneVisitUser
O bitmap devolvido ou o valor hexadecimal de String é \ xb0, que representa o sinal de graduação em ASCII. Vamos inspecionar cada bit da string que é armazenada na chave de destino AtleaseOneVisitUser Usando o comando getbit.
getbit ATLEASEONEVISITUSER 0
getbit ATLEASEONEVISITUSER 1
getbit ATLEASEONEVISITUSER 2
getbit ATLEASEONEVISITUSER 3
getbit ATLEASEONEVISITUSER 4
Como podíamos ver na saída, o bitmap resultante se parece com o seguinte:
1 | 0 | 1 | 1 | 0
O deslocamento 0 está associado ao ID do usuário 0, o deslocamento 1 é com o ID do usuário 1 e assim por diante. De acordo com o resultado da operação ou da operação, apenas três usuários visitaram o site pelo menos um dia a partir dos três dias mencionados. Os usuários armazenados nos compensações 1 e 4 que estão associados aos IDs de usuário 1 e 4 não visitaram o site no domingo, segunda -feira ou terça -feira.
Conclusão
Em resumo, o Redis Bitmaps é uma variedade de zeros e aqueles onde cada bit é identificado por um valor de deslocamento. Como discutido, o comando bitop é usado para executar operações bitwise, como ou e xor, e não sobre um bitmap ou string especificado. Conforme mostrado no caso de uso, a string resultante é armazenada na chave especificada. Este comando é bastante lento quando o tamanho da corda mais longa é aumentado. No geral, o comando bitop é útil para identificar os padrões de visitas ao site e estatísticas de uso de aplicativos de música durante um determinado período.