Galeria de mapas mentais Redis
Este é um mapa mental sobre Redis, com uma introdução detalhada e uma descrição abrangente. Espero que seja útil para amigos interessados!
Editado em 2023-12-21 17:36:42A segunda unidade do Curso Obrigatório de Biologia resumiu e organizou os pontos de conhecimento, abrangendo todos os conteúdos básicos, o que é muito conveniente para todos aprenderem. Adequado para revisão e visualização de exames para melhorar a eficiência do aprendizado. Apresse-se e colete-o para aprender juntos!
Este é um mapa mental sobre Extração e corrosão de mim. O conteúdo principal inclui: Corrosão de metais, Extração de metais e a série de reatividade.
Este é um mapa mental sobre Reatividade de metais. O conteúdo principal inclui: Reações de deslocamento de metais, A série de reatividade de metais.
A segunda unidade do Curso Obrigatório de Biologia resumiu e organizou os pontos de conhecimento, abrangendo todos os conteúdos básicos, o que é muito conveniente para todos aprenderem. Adequado para revisão e visualização de exames para melhorar a eficiência do aprendizado. Apresse-se e colete-o para aprender juntos!
Este é um mapa mental sobre Extração e corrosão de mim. O conteúdo principal inclui: Corrosão de metais, Extração de metais e a série de reatividade.
Este é um mapa mental sobre Reatividade de metais. O conteúdo principal inclui: Reações de deslocamento de metais, A série de reatividade de metais.
Redis
romances
definição
Uma transação é uma operação de isolamento separada. Todas as operações na transação serão serializadas e executadas em ordem. A execução da transação não será interrompida por comandos enviados por outros clientes.
efeito
Concatene vários comandos para evitar que outros comandos entrem na fila
Ordem
Tecla ASSISTIR [tecla ...]
Antes de executar multi, execute watch key1 [key2] primeiro, que pode monitorar uma (ou mais) chaves. Se esta (ou essas) chaves forem alteradas por outros comandos antes da transação ser executada, a transação será interrompida.
Múltiplo
Os comandos inseridos entrarão na fila de comandos, mas não serão executados. Eles aguardarão a execução do comando Exec e os executarão em sequência.
Executivo
Executar fila de comando
descartar
Eliminar fila de comandos
Tratamento de erros de transação
A formação da equipe foi bem-sucedida e a execução foi bem-sucedida. Todos os comandos serão executados de maneira ordenada.
Se a equipe for formada com sucesso, selecione descartar e todos os comandos não serão executados.
Se ocorrer um erro em um comando na fila, toda a fila será cancelada durante a execução.
A equipe é formada com sucesso, mas um determinado comando dá errado durante a execução. Exceto o comando errado, todos os outros comandos serão executados.
As transações Redis não são atômicas
Três características principais das transações Redis
operações de quarentena separadas
Todos os comandos em uma transação são serializados e executados sequencialmente. Durante a execução da transação, ela não será interrompida por solicitações de comandos enviadas por outros clientes.
Nenhum conceito de nível de isolamento
Os comandos na fila não serão realmente executados até que sejam enviados, porque nenhuma instrução será realmente executada antes da transação ser enviada.
Nenhuma garantia de atomicidade
Se um comando na transação falhar na execução, os comandos subsequentes ainda serão executados sem reversão.
A diferença entre transações Redis e transações Mysql (em torno de ACID)
Persistência
RDB
Configuração principal
nome do arquivo de configuração dbfilename
salvar
Quantas operações foram realizadas em quantos segundos?
Acionar RDB
Acionar salvamento automaticamente
Bloqueará o processo principal até que a persistência do RDB seja concluída
Salvamento manual: bgsave
O Redis executará operações de snapshot de forma assíncrona em segundo plano, e o snapshot também poderá responder às solicitações do cliente.
Você pode obter o horário da última execução do snapshot por meio do lastsave.
Não bloqueia o processo principal
Execute o comando flushall
A execução do comando flushall também gerará o arquivo dump.rdb, mas ele está vazio e sem sentido.
O comando flushdb não gera o arquivo dump.rdb
Saia do Redis normalmente
Mais configurações em redis.conf
erro stop-writes-on-bgsave
Quando o Redis não consegue gravar no disco, desligue diretamente a operação de gravação do Redis. Recomendo sim
arquivos compactados rdbcompression
Se não quiser consumir CPU para compactação, você pode desativar esse recurso. Recomendo sim.
rdbchecksum verifica a integridade
Depois de armazenar o instantâneo, você também pode solicitar ao redis que use o algoritmo CRC64 para verificação de dados.
Processo de persistência (instantâneo de memória)
O Redis criará (fork) um processo filho separadamente para persistência. Ele primeiro gravará os dados em um arquivo temporário. Após a conclusão do processo de persistência, esse arquivo temporário será usado para substituir o último arquivo persistido. Durante todo o processo, o processo principal não executa nenhuma operação de IO, o que garante um desempenho extremamente alto. Se for necessária a recuperação de dados em grande escala e a integridade da recuperação de dados não for muito sensível, o método RDB é mais eficiente que o método AOF. . de alta eficiência. A desvantagem do RDB é que os dados após a última persistência podem ser perdidos
A função do Fork é copiar um processo igual ao processo atual. Todos os dados (variáveis, variáveis de ambiente, contador de programa, etc.) do novo processo têm os mesmos valores do processo original, mas é um processo completamente novo e serve como um processo filho do processo original.
Vantagem
Adequado para recuperação de dados em grande escala
Mais adequado para requisitos de integridade e consistência de dados que não são altos
Economize espaço em disco
Recuperação rápida
Desvantagens
Todas as modificações do último instantâneo podem ser perdidas
AOF
introduzir
Registre cada operação de gravação na forma de um log. Os arquivos só podem ser anexados, mas não reescritos.
Não ativado por padrão
anexar apenas não
Quando AOF e RDB estiverem habilitados ao mesmo tempo, AOF terá prioridade.
processo de persistência
O comando de gravação solicitado pelo cliente será anexado ao buffer AOF.
O buffer AOF sincroniza operações com o arquivo AOF no disco de acordo com a política de persistência AOF.
Quando o arquivo AOF excede a política de reescrita ou é reescrito manualmente, o arquivo AOF será reescrito para compactar a capacidade do arquivo AOF.
Quando o servidor Redis for reiniciado, ele carregará as operações de gravação no arquivo AOF.
Configuração de frequência de sincronização
anexarfsync sempre
Sempre sincronizado, cada gravação do Redis será registrada no log imediatamente. O desempenho é ruim, mas a integridade dos dados é melhor;
anexarfsync a cada segundo
Sincronize a cada segundo, primeiro grave o log no buffer de memória do arquivo AOF e, em seguida, grave o conteúdo do buffer no disco a cada segundo. Se houver um tempo de inatividade, os dados deste segundo poderão ser perdidos.
anexarfsync não
O Redis não sincroniza ativamente e deixa o tempo de sincronização para o sistema operacional.
Vantagem
O mecanismo de backup é mais robusto e os dados não são facilmente perdidos
Arquivos de log legíveis para lidar com operações de erro
Desvantagens
Ocupa mais espaço em disco que o RDB
Recuperação lenta
Se a leitura e a escrita estiverem sempre sincronizadas, o desempenho estará sob pressão.
Existem alguns bugs que tornam a recuperação impossível.
Estratégia de exclusão de chave expirada do Redis
O Redis usa uma combinação de estratégias de exclusão regular e exclusão lenta.
Exclusão periódica: De vez em quando, chaves com prazo de validade são selecionadas aleatoriamente, verificadas para ver se expiraram e excluídas após a expiração.
Repita 10 vezes a cada 1 segundo, selecione aleatoriamente 20 chaves para verificar se elas expiraram. Se 25% das chaves expiraram, repita este comportamento.
Muitas chaves expiradas serão perdidas
Exclusão lenta: quando os dados expirarem, eles não serão processados primeiro. Quando a chave expirada for acessada, ela será excluída.
Troque espaço por tempo
Se muitas chaves expiradas forem perdidas e não verificadas, a exclusão lenta não será executada. Um grande número de chaves expiradas será acumulado na memória, fazendo com que a memória do Redis se esgote. Neste momento, o mecanismo de eliminação de memória será usado.
Replicação mestre-escravo
o que é
Após a atualização dos dados do host, os dados são automaticamente sincronizados com o mecanismo mestre/escravo de acordo com a política. O mestre é responsável pela escrita e o escravo é responsável pela leitura.
O que você pode fazer
Separação de leitura e gravação, expansão de desempenho
Recuperação de desastres e recuperação rápida para melhorar a disponibilidade
Como jogar
Inicie vários serviços redis
Configurar biblioteca escrava
Executar porta IP slaveof
Consultar informações mestre-escravo
replicação de informações
Situações comuns
Um mestre e dois servos
A máquina escrava pode escrever? É possível definir?
Não pode ser escrito, nem pode ser definido.
O que acontece depois que o host é desligado? O escravo está na posição superior ou em espera?
A máquina escrava está em espera
Depois que o mestre voltar e adicionar um novo registro, o escravo ainda poderá copiá-lo sem problemas?
Pode
O que acontece depois que uma das máquinas escravas falha? Será que conseguirá acompanhar o grande exército tal como está?
Pode
Passando a tocha
Máquinas com identidade dupla de mestre e escravo podem gravar dados? ?
Não, desde que você tenha a identidade do escravo, você não poderá gravar dados.
Principalmente anti-cliente
Se a máquina mestre estiver inoperante, você poderá transformar manualmente a máquina escrava em máquina mestre.
Princípio de cópia
Depois que o escravo for iniciado e se conectar com sucesso ao mestre, ele enviará um comando de sincronização.
Master recebe o comando para iniciar o processo de salvamento em segundo plano e coleta todos os comandos recebidos para modificar o conjunto de dados. Após a conclusão do processo em segundo plano, o mestre transferirá todo o arquivo de dados RDB para o escravo para concluir uma sincronização completa.
Cópia completa: Após receber os dados do arquivo de banco de dados, o serviço escravo os salva e carrega na memória.
Replicação incremental: o mestre continua a passar todos os novos comandos de modificação coletados para o escravo para concluir a sincronização
Mas enquanto o mestre for reconectado, uma sincronização completa (replicação completa) será executada automaticamente
Modo sentinela
Sentinel é um processo Redi executado em modo de recurso e tem três tarefas principais:
monitor
Envie comandos PING para todas as bibliotecas mestre-escravo para verificar se estão ativas. Se não responderem dentro do tempo especificado, serão consideradas offline.
Off-line subjetivo
Se o sentinela descobrir que a resposta da biblioteca mestre ou escrava ao comando PING expira, então o sentinela atual irá primeiro marcá-lo Para "offline subjetivo
Objetivo off-line
Se N/2 sentinelas marcarem o banco de dados principal como subjetivamente offline, então o banco de dados principal será marcado como "objetivamente offline"
Somente quando o banco de dados principal estiver marcado como objetivamente off-line, o Sentinel elegerá um novo banco de dados principal.
Se houver apenas um sentinela, e por motivos de rede ou pressão excessiva no banco de dados principal, o banco de dados principal não responde ao sentinela a tempo e é marcado como off-line subjetivo pelo sentinela. Neste momento, há apenas um sentinela. , e um novo banco de dados principal será eleito diretamente. Se houver um sentinela, o novo banco de dados principal será eleito diretamente. Em um cluster, mais de N/2 1 sentinelas devem marcar o banco de dados principal como subjetivo offline e, em seguida, o banco de dados principal. será marcado como objetivamente offline e então os sentinelas elegerão um novo banco de dados principal para reduzir erros de julgamento.
Escolha o mestre
Se a biblioteca master falhar, uma nova biblioteca master será selecionada na máquina escrava.
O processo de eleição de um novo banco de dados mestre
filtro
A partir do status on-line atual da biblioteca, também é necessário determinar o status anterior da conexão de rede.
Pontuação
Prioridade da biblioteca escrava
Copiar o progresso da biblioteca
Número de ID da biblioteca escrava
notificar
Envie as informações da nova biblioteca mestre para outras bibliotecas escravas, deixe que outras bibliotecas escravas estabeleçam conexões com a nova biblioteca mestre e executem a replicação de dados.
o que é
A versão automática anti-cliente pode monitorar se o host está com defeito em segundo plano. Se falhar, ele mudará automaticamente do banco de dados escravo para o banco de dados principal com base no número de votos.
Como jogar
Crie um novo arquivo sentinel.conf, o nome não deve estar errado
Configure o sentinela e preencha o conteúdo
monitor sentinela mymaster 127.0.0.1 6379 1
Entre eles, mymaster é o nome do servidor do objeto de monitoramento e 1 é o número mínimo de sentinelas que concordam em migrar.
Iniciar Sentinela
/usr/local/bin
Execute redis-sentinel /myredis/sentinel.conf
Quando o mestre desligar, um novo mestre será selecionado dentre os escravos.
regras eleitorais
prioridade
Padrão em redis.conf: replica-priority 100, quanto menor o valor, maior a prioridade.
Desvio
O deslocamento refere-se aos dados mais completos obtidos do host original.
runido
Após cada instância do Redis ser iniciada, um runid de 40 dígitos será gerado aleatoriamente (obtido e visualizado por meio do servidor de informações)
conjunto
O que é um aglomerado
Expansão horizontal do Redis
Se alguns nós do cluster falharem ou não conseguirem se comunicar, o cluster poderá continuar a processar solicitações de comando.
Se a máquina mestre estiver inoperante, a máquina escrava será automaticamente promovida a Mestre.
Configuração
modificação da configuração do cluster redis
habilitado para cluster sim ativa o modo cluster
cluster-config-file nodes-6379.conf define o nome do arquivo de configuração do nó
cluster-node-timeout 15000 define o tempo de desconexão do nó. Após esse tempo (milissegundos), o cluster alterna automaticamente entre mestre e escravo.
comece
redis-cli --cluster criar --cluster-réplicas 1 192.168.11.101:6379 192.168.11.101:6380 192.168.11.101:6381 192.168.11.101:6389 192.168.11.101:6390 192 .168.11.101:6391
Não use 127.0.0.1, use um endereço IP real
O que são slots
Um cluster Redis contém 16.384 slots de hash e cada chave no banco de dados pertence a um desses 16.384 slots.
Para valores-chave que não estão no mesmo slot, operações com várias teclas, como mget e mset, não podem ser usadas.
Desvantagens do clustering
A operação com várias teclas não é suportada
As transações Redis com várias chaves não são suportadas. O script lua não é suportado
Mais complexo
Por que um cluster requer pelo menos três nós
Se um nó estiver inativo e mais da metade dos nós achar que ele está inativo por meio do mecanismo de votação de pingue-pongue, o cluster estará inativo. Se houver apenas dois nós e um nó estiver inativo, o outro nó votará. Apenas 50%, mas metade deles, este cluster não irá falhar, então são necessários pelo menos três nós
Por que um cluster requer pelo menos seis servidores
Como um cluster requer pelo menos três nós e cada nó requer uma máquina de backup, um cluster requer pelo menos seis servidores.
Desenvolvimento de conexão JAVA Jedis
Dependência: <artifactId>jedis</artifactId>
Conjunto de conexões JedisPool
setBlockWhenExhausted
/Se bloquear quando a conexão estiver esgotada, false reportará uma exceção, true bloqueará até o tempo limite, o padrão é true
setTestOnBorrow
Verifique se a conexão está desativada ao buscá-la no pool de conexões
Conectando objetos JedisPool automaticamente
Cinco tipos de dados principais
aplicativo
Uso básico
manual de instalação
redis-benchmark: uma ferramenta de teste de desempenho que pode ser executada em seu próprio notebook para ver o desempenho do seu notebook.
redis-check-aof: Reparar arquivos AOF problemáticos, rdb e aof serão discutidos mais tarde
redis-check-dump: corrige arquivo dump.rdb problemático
redis-sentinel: usado pelo cluster Redis
redis-server: comando de inicialização do servidor Redis
redis-cli: cliente, entrada de operação
Arquivo de configuração redis.conf
Comece em segundo plano
daemonizar não para sim
Inicie o servidor redis-server /myredis/redis.conf
Use o cliente para acessar o redis-cli
-p especifica a porta
-c modo de cluster
Configuração relacionada à rede
vincular
Nenhuma escrita significa acesso ilimitado a todos os endereços IP.
modo protegidomodo protegido
Ativado por padrão Mesmo que o acesso de todos os endereços IP seja aceito, o acesso não poderá ser bem-sucedido.
Número da porta
Padrão 6379
fila de conexão tcp-backlog
tempo limite
Quanto tempo leva para um cliente inativo fechar? 0 desativa esta função, ou seja, a conexão nunca será desconectada.
detecção de pulsação tcp-keepalive de clientes
Se definido como 0, a detecção de manutenção de atividade não será executada.
Configuração comum
daemonizar thread daemon
A configuração padrão não é sim, que é um processo daemon e pode ser iniciado em segundo plano.
pidfile O local onde o arquivo pid está armazenado
nível de log nível de log
debug: imprimirá e gerará uma grande quantidade de informações, adequadas para a fase de desenvolvimento/teste
detalhado: contém muitas informações menos úteis, mas não é tão confuso quanto o nível de depuração
aviso: Moderadamente detalhado, adequado para ambientes de produção
aviso: registre apenas mensagens de aviso muito importantes e críticas
arquivo de log nome do arquivo de log
O padrão é arquivo de log stdout
bancos de dados define o número de bancos de dados
O número padrão de bancos de dados é 16 e o banco de dados padrão selecionado é 0
limite
maxclients número máximo de conexões de servidor
O padrão é conexões de 1W. Quando o limite superior for atingido, a conexão será recusada.
memória máxima
Recomenda-se que seja configurado, caso contrário a memória ficará cheia e causará travamento do servidor.
política de eliminação de memória maxmemory-policy
volatile-lru: Use o algoritmo LRU para remover chaves, apenas chaves com tempo de expiração definido (menos usadas recentemente);
volatile-ttl: Remova as chaves com menor valor de TTL, ou seja, aquelas chaves que irão expirar recentemente
volátil-aleatório: Remove chaves aleatórias do conjunto expirado, apenas chaves com tempo de expiração definido
allkeys-lru: Use o algoritmo LRU para remover chaves de todas as chaves definidas
allkeys-random: remove chaves aleatórias de todas as chaves definidas
nodespejo: Sem remoção. Para operações de gravação, apenas informações de erro são retornadas
Limite de E/S
io-threads-do-reads Se deve ativar o multi-threading IO
O padrão é não. Se ativado, altere para sim.
io-threads Número de threads de IO
Recomenda-se definir 2 ou 3 threads para uma máquina de 4 núcleos e 6 threads para uma máquina de 8 núcleos. O número de threads deve ser menor que o número de núcleos da máquina e tentar não exceder 8.
Redis está fechado
Desligamento de instância única
desligamento redis-cli
Desligamento de múltiplas instâncias
redis-cli -p 6379 desligamento
Multiplexação IO múltipla de thread único
Redis6.0 apresenta multithreading
Banco de dados NoSQL
O que é um banco de dados NoSQL
Não segue os padrões SQL
Não suporta ACID
atomicidade
consistência
Isolamento
persistência
Excede em muito o desempenho do SQL
Cena aplicável
Leitura e gravação de dados altamente simultâneas
Lendo e gravando dados massivos
Altamente escalável para dados
Cenário não utilizado
Precisa de suporte para transações
Requer armazenamento estruturado de consultas, processamento de relacionamentos complexos e consultas ad hoc
Consulta ad hoc: os usuários podem selecionar com flexibilidade as condições de consulta de acordo com suas próprias necessidades, e o sistema gera relatórios estatísticos correspondentes com base nas seleções do usuário.
Redis cinco principais tipos de dados
Tipo de string
aumentar
set <key><value>Adicionar par chave-valor
setex <key><tempo de expiração><valor> Ao definir o valor da chave, defina o tempo de expiração em segundos.
setnx <key><value>Defina o valor da chave somente se a chave não existir
mset <key1><value1><key2><value2>Defina um ou mais pares de valores-chave ao mesmo tempo
verificar
get <key> Consulte o valor da chave correspondente
strlen <key> obtém o comprimento do valor
mget <key1><key2><key3> Obtém um ou mais valores ao mesmo tempo
getrange <key><posição inicial><posição final> Obtenha o intervalo de valores, semelhante a substring em java, pacote frontal, pacote traseiro
mudar
incr <chave>
Aumente o valor numérico armazenado na chave em 1
Só pode operar com valores numéricos. Se estiver vazio, o novo valor é 1.
decr <chave>
Diminua o valor numérico armazenado na chave em 1
Só pode operar com valores numéricos. Se estiver vazio, o novo valor será -1.
incrby / decrby <key><step>aumenta ou diminui o valor numérico armazenado na chave. Tamanho de passo personalizado.
excluir
del chave
especial
anexar <key><value> anexa o <valor> fornecido ao final do valor original
getset <chave><valor>
Substitua o antigo pelo novo, defina um novo valor e obtenha o valor antigo ao mesmo tempo
O número do produto e o número do pedido são gerados usando as características de número crescente da string.
Tipo de lista
aumentar
lpush/rpush <key><value1><value2><value3> .... Insira um ou mais valores da esquerda/direita.
verificar
lrange <chave><iniciar><parar>
Obtenha elementos de acordo com o subscrito do índice (da esquerda para a direita)
lindex <key><index>Obter elementos de acordo com o subscrito do índice (da esquerda para a direita)
llen <key> obtém o comprimento da lista
mudar
lset<key><index><value>substitui o valor cujo subscrito é índice na chave da lista por valor
excluir
lrem <key><n><value>Excluir n elementos iguais ao valor da esquerda (da esquerda para a direita)
especial
lpop/rpop <key>Exibe um valor da esquerda/direita. O valor está na chave e o valor está na chave.
rpoplpush <key1> <key2> cospe um valor do lado direito da lista <key1> e o insere no lado esquerdo da lista <key2>.
linsert <key> antes de <value><newvalue>Insert <newvalue> depois de <value> para inserir o valor
Como lista de amigos, lista de fãs, fila de mensagens, classificação das últimas notícias, etc. O método rpush equivale a colocar a mensagem na fila, e lpop/rpop equivale a retirar a mensagem da fila para consumo.
Tipo de hash
aumentar
hset <key><field><value> atribui <value> à chave <field> na coleção <key>
hmset <key1><field1><value1><field2><value2>... Definir valores de hash em lotes
verificar
hget <key1><field> recupera o valor da coleção <key1> <field>
hmget <key1><field1> <field2>... Obtenha valores de hash em lotes
hlen <key> obtém o número de valores de campo no hash
hexists<key1><field>Verifique se o campo fornecido existe na chave da tabela hash
mudar
hincrby <key><field><increment> adiciona incremento ao valor do campo field na chave da tabela hash (negativo significa subtração)
hsetnx <key><field><value> define o valor do campo field na chave da tabela hash como valor se e somente se o campo field não existir
excluir
hdel <key><field> exclui o <field> especificado na coleção <key>
especial
hgetall <key> obtém todos os campos e valores em
hkeys <key> lista todos os campos do conjunto de hash
hvals <key> lista todos os valores do conjunto hash
Use um objeto para armazenar informações do usuário, informações do produto, informações do pedido, etc.
Tipo ZSet
aumentar
zadd <chave><pontuação1><membro 1><pontuação2><membro 2>…
Adicione um ou mais elementos membros e seus valores de pontuação à chave do conjunto ordenado
verificar
zcard<key> retorna o número de elementos no conjunto ordenado
zcount <key><min><max> conta o conjunto, o número de elementos no intervalo de pontuação
zrange <key><start><stop> [WITHSCORES] Classificar de pequeno para grande
Retorna os elementos na chave do conjunto ordenado cujos subscritos estão entre <start><stop>
Com WITHSCORES, as pontuações e valores podem ser retornados ao conjunto de resultados.
zrevrange <key><start><stop> [WITHSCORES] Classificar de grande para pequeno
chave zrangebyscore min max [com pontuações] [limite de contagem de deslocamento]
Retorna todos os membros da chave do conjunto classificado cujo valor de pontuação está entre mínimo e máximo (incluindo igual a mínimo ou máximo). Os membros do conjunto ordenado são organizados em ordem crescente de valor da pontuação (de pequeno para grande).
chave zrevrangebyscore max min [withscores] [limit offset count] (observe que o parâmetro é tamanho)
O mesmo que acima, mas organizado do maior para o menor.
zrank <key><member> retorna a classificação do membro na chave do conjunto ordenado. Os membros do conjunto ordenado são organizados em ordem crescente de valor da pontuação (de pequeno para grande). A classificação é baseada em 0, ou seja, o membro com menor valor de pontuação é classificado como 0.
zrevrank <key><member> Obtenha a classificação dos membros em ordem decrescente do valor da pontuação (de grande para pequeno).
mudar
zincrby <key><increment><member > adiciona um incremento à pontuação do elemento
excluir
zrem <key><member>Exclua o elemento com o valor especificado na coleção
especial
Classificação: por exemplo, um site de vídeo precisa classificar os vídeos enviados pelos usuários.
Definir tipo
aumentar
sadd <chave><valor1><valor2> .....
Adicione um ou mais elementos membros à chave de coleção. Os elementos membros existentes serão ignorados.
verificar
smembers <key> retira todos os valores da coleção
scard<key> retorna o número de elementos na coleção
ismember<key> <value> Consulta se o valor na coleção já existe
mudar
excluir
srem <key><value1><value2> .... Excluir um elemento da coleção
especial
spop <key> cospe um valor aleatório da coleção
smove <source><destination>value move um valor na coleção de uma coleção para outra
sinter <key1><key2> retorna o elemento de interseção de dois conjuntos.
sunion <key1><key2> retorna os elementos de união de dois conjuntos.
sdiff <key1><key2> retorna os elementos de diferença dos dois conjuntos (aqueles em key1, excluindo aqueles em key2)
registro de votação Amigos comuns, interesses comuns, tags de classificação