Um conjunto pode armazenar mais de quatro bilhões de membros únicos. Principais operações definidas, como adicionar e remover tem complexidade constante de tempo, o que é muito eficiente. Quando você está tentando adicionar um elemento existente a um conjunto, ele manterá apenas uma cópia desse elemento sem criar um novo elemento. Portanto, não há necessidade de adicionar verificações explícitas duplicadas.
O comando 'Smembers'
Existem vários comandos disponíveis para operar em conjuntos de Redis. É sempre útil buscar todos os elementos armazenados em um conjunto. Geralmente, o comando 'Smembers' é usado para recuperar elementos em um conjunto Redis.
Sintaxe
SMEMBERS
Cada conjunto tem uma chave que atua como uma referência para a matriz de elementos.
Exemplo - Contagem de visualizações de página de usuários exclusivos
Vamos dar um exemplo onde seu site precisa contar as opiniões provenientes de usuários únicos. Portanto, você não conta com visualizações provenientes do mesmo ID de usuário. Podemos usar um conjunto para manter todos os usuários exclusivos visitando seu site.
Podemos usar o comando 'sadd' para criar um novo conjunto em uma chave especificada e adicionar alguns membros.
SADD Visitorids "Henry001"
SADD Visitorids "Jackma"
SADD Visitorids "Singh06"
SADD Visitorids "Robin"
Isso criaria um conjunto com a chave 'VisitorIds' com quatro membros, conforme mostrado no seguinte.
Vamos executar o comando 'Smembers' para verificar os membros disponíveis no conjunto identificado pela chave 'VisitorIds'.
Saída:
A matriz devolvida não contém nenhum IDs de usuário duplicado porque o comando 'sadd' não permitiu que os membros duplicados entrassem. Portanto, você pode identificar os usuários exclusivos que visitaram seu site na saída de comando acima.
Podemos usar o comando 'sadd' para adicionar vários membros de uma só vez sem executar repetidamente o mesmo comando.
Sadd NewVisitores "Singh06" "Henry001" "Jackma" "Robin"
Saída:
O mesmo resultado é dado pelo comando 'Smembers'.
O comando 'Sinter' pode ser usado em vez do comando 'Smembers'. Geralmente, o comando 'Sinter' retorna a interseção de dois conjuntos. Mas você pode usá -lo passando uma chave. Ele retornaria os membros do conjunto armazenados na chave passada.
Sinter NewVisitores
Saída:
O desempenho do comando 'Smembers'
Este comando tem uma complexidade de tempo linear que pode ser representada como O (n). Isso significa que quando a contagem de membros aumenta, o tempo necessário para devolver a variedade de elementos subirão.
O comando 'Smembers' em um tipo não definido
Geralmente, o comando 'Smembers' só funciona com os tipos de dados definidos. Isso levantará um erro para outros tipos de dados. Vamos criar um 'hash' como mostrado no seguinte.
Hset myhash id 1 nome engraçado
Nós criamos um hash chamado 'myhash'. Em seguida, passaremos essa chave para o comando 'Smembers'.
SMEMBERS MYHASH
Saída:
Como esperado, o comando retorna uma mensagem de erro indicando que a chave não está segurando um valor de tipo definido. É um hash. Portanto, o comando 'Smembers' é encerrado com a mensagem de erro acima. Portanto, este comando é específico para definir tipos de dados.
Conclusão
Redis vem com vários tipos de dados embutidos. Ele suporta conjuntos. Um conjunto é uma coleção não ordenada de strings. Não armazena membros duplicados. Se tentarmos inserir um elemento duplicado em um conjunto, ele manterá apenas uma única cópia desse membro. Operações de conjunto de Redis são muito eficientes. As operações de adição e remoção têm complexidade de tempo constante. Podemos usar o comando 'Smembers' para retornar todos os membros armazenados em um conjunto em uma chave especificada. Esta operação tem complexidade de tempo linear e ainda é muito útil em aplicativos do mundo real.