Programador, quer entender completamente Redis, este de 15 pontos que você deve entender ~ (puro seco)

Dicas: o conteúdo um pouco mais, não há necessidade de "fast forward" amigos, o foco pode ser visto de acordo com o diretório ~

Redis é uma fonte aberta, ligação de alta performance - armazenamento de valor (armazenamento de chaves-valor). É muitas vezes chamado de uma estrutura de dados do servidor (server estrutura de dados).

chaves Redis pode incluir uma string (cordas) Tipo, e compreendendo ainda um hash (dos hashes), listas (listas), conjunto (conjuntos), e uma coleção ordenada (conjuntos ordenados) e outros tipos de dados. Para estes tipos de dados, você pode executar uma operação atômica. Por exemplo: as operações de cadeia adicionais (Anexar); valor de hash é incrementado; Elements Adicionar à lista; intersecção dos conjuntos calculados e define os conjuntos de diferença.

A fim de obter um desempenho superior, conjunto de dados Redis utilizando a memória (na memória) forma (série de dados). Enquanto isso, Redis suporta dados persistentes, você pode despejar conjunto de dados ao longo do tempo no disco (instantâneo), ou anexar cada comando operação (append único arquivo, AOF) no final do log.

Redis também suporta o mestre de replicação (replicação mestre-escravo), e tem uma sincronização muito rápido inicial não bloqueadores (não bloqueante primeira sincronização), voltar a ligar automaticamente as funções de corte da ligação de rede. Enquanto isso Redis também tem uma série de outros recursos, incluindo suporte para coisas simples, publicação-assinatura (pub / sub), pipeline (gasoduto) e memória virtual (VM) e assim por diante. Redis tem um cliente rico que suporta nesta fase a maioria das linguagens de programação populares.

Este diretório do artigo:

Instalação Redis
Redis configuração
Redis tipos de dados
função Redis
persistente
replicação mestre-escravo
suporte a transações
publicar e assinar
gasoduto
memória virtual
desempenho Redis
Redis implantação
cenários Redis
Redis resumo
Redis instalar:
Faça o download do mais recente versão estável do Redis ( http://redis.io/download )

alcatrão zxvf redis-2.2.11 descompressor

Programador, quer entender completamente Redis, este de 15 pontos que você deve entender ~ (puro seco)
cd para o diretório src src fazer o compilador teste Redismake pode testar (este passo pode ser omitido) make install para instalar, o diretório de instalação padrão é / usr / / bin local, 5 gera arquivos binários, que podem ser Kaodao diretório novo, por exemplo: / usr / local / Redis / bin

Programador, eu quero entender completamente Redis, este de 15 pontos que você deve entender ~ (puro seco)
fonte cp /src/redis.conf / usr / local / Redis / etc arquivos de configuração são copiados cd /usr/local/redis./ bin / Redis-servidor ./etc/redis.conf começar Redis Redis serviço neste momento já está em execução, mas para obter um bom desempenho, mas também uma configuração razoável para o arquivo de configuração

configuração Redis:

  1. Redis não é uma forma padrão daemon está em execução, você pode modificar o item de configuração, use sim Ativar daemon daemonize não
  2. Quando Redis quando rodando em modo daemon, o padrão Redis irá gravar o arquivo pid /var/run/redis.pid, você pode especificar pidfile /var/run/redis.pid por pidfile
  3. Redis designados porta do monitor, a porta padrão é 6379
  4. acolhimento endereço 127.0.0.1 de ligação a ligação
    5. A quando o cliente fecha a conexão é o tempo ocioso, se especificado como zero desativa esta função timeout 300
  5. Especifica o nível de log, Redis suporta um total de quatro níveis: debug, detalhado, aviso, aviso, o padrão é detalhado loglevel detalhado
  6. modo de registo, o padrão é a saída padrão, se configurado para funcionar como um Redis modo daemon, mas aqui novamente configurado para log para a saída padrão, o registro será enviado para / dev / null arquivo de log stdout
  7. Conjunto de banco de dados número, o banco de dados padrão é 0, podem ser utilizados SELECT <dbid> ligado às bases de dados ID de comando de banco de dados especificados 16
  8. Especifica quanto tempo, quantas vezes a operação de atualização, os dados serão sincronizados com o arquivo de dados, com uma pluralidade de condições pode salvar <segundos> <alterações> perfil Redis padrão fornecido três condições: save 900 1 save 300 10 Guardar 60 10000, respectivamente, têm uma mudança dentro de 900 segundos (15 minutos) e 300 segundos (5 minutos) 10 10 000, bem como para alterar a variação dentro de 60 segundos.
  9. Enormes sim rdbcompression Especifica se para comprimir os dados armazenados no banco de dados local, o padrão é sim, Redis usando compressão LZF, se a CPU, a fim de economizar tempo, você pode desativar essa opção, mas fará com que os arquivos de banco de dados tornam-se
  10. Especifique o nome do arquivo de banco de dados local, o valor padrão dump.rdb dump.rdb dbfilename
  11. Especifique o dir diretório de armazenamento do banco de dados local ./
  12. Quando a unidade é fornecido serviço eslavo, o serviço mestre conjunto de endereço IP e porta, em Redis é iniciado, ele irá sincronizar automaticamente os dados de slaveof mestre <masterip> <masterport>
  13. Quando o serviço de mestre é protegido por senha, slav conexão de serviço senha mestra masterauth <master-password>
  14. Fornecida senha de conexão Redis, se a senha for configurado conector, quando conectado à senha do cliente é exigido por Redis auth <password> comando, o padrão fechado foobared requirepass
  15. Defina o mesmo tempo que o número máximo de conexões do cliente, o número máximo padrão de arquivo descritores ilimitada, Redis pode ser aberto ao mesmo tempo o número de ligações de cliente para processo Redis pode ser aberta, se SET MaxClients 0, uma quantidade ilimitada. Quando o número de clientes conectados ao limite for atingido, Redis fecha uma nova conexão de volta para o número máximo de clientes de clientes atingiu MaxClients de erro 128
  16. Depois de especificar o limite máximo de memória Redis, Redis serão carregados os dados de inicialização na memória, a memória máxima, Redis vai primeiro tentar limpar expirado ou prestes a expirar Key, quando esse método funcionou, ainda alcançar as configurações de memória máxima, já não vai ser capaz de escrever, mas você ainda pode operações de leitura. Redis vm novo mecanismo será armazenado Key memória, valor será armazenado na área de troca MaxMemory <bytes>
  17. Especificar se após cada registro de operação de atualização, Redis padrão de dados assíncrona é gravado em disco, se você não sua vez, pode resultar em dados ao longo de um período de tempo quando a energia é perdida. Porque a própria Redis para arquivo de dados de sincronização é baseada nos critérios acima de para Gravar sincronizado, por isso alguns dados só existem na memória por algum tempo. O padrão não é appendOnly não
  18. Atualização nome do arquivo de log é especificado, o padrão é appendonly.aof appendfilename appendonly.aof
  19. log atualização condições especificadas, existem três valores possíveis: não: representa sistemas como o cache de dados sincronizando para o disco (rápido) operando sempre: representação após cada atualização manualmente chamar fsync () grava dados para o disco (lento, seguro) everysec: representa a sincronização de uma vez por segundo (a um compromisso, o valor padrão) appendfsync everysec
  20. Especifica se o mecanismo de memória virtual é ativado, o valor padrão é não, um olhar breve, VM mecanismo de paginação dados serão armazenados pela visita de menos página Redis que é trocar dados frios para o disco, acesso a várias páginas trocadas automaticamente pelo disco na memória (em um artigo mais tarde eu vou analisar cuidadosamente o mecanismo Redis VM) não vm-habilitado
  21. Caminho do arquivo de memória virtual, o valor padrão /tmp/redis.swap, não uma pluralidade de instâncias compartilham /tmp/redis.swap Redis-swap-file vm
  22. Todos os dados é maior do que vm-max-memória armazenada na memória virtual, independentemente configurações de memória vm-max quão pequena, todos os dados índice é armazenado na memória (Redis dados índice é teclas), isto é, quando vm-max conjunto -Memória a 0, o fato é que todo o valor estão presentes no disco. O valor padrão é 0 vm-max-memory 0
  23. arquivo de troca Redis em muitos da página, um objeto pode ser armazenado em várias páginas acima, mas em uma página não pode ser compartilhado por vários objetos, vm-page-tamanho de acordo com o tamanho do conjunto de dados armazenados, os autores sugerem que, se armazenar muitos objetos pequenos, o tamanho da página é de preferência definida para 32 ou 64bytes; grande se grandes objetos armazenados, você pode usar uma página maior, se incerto, o valor padrão vm-page-size 32
  24. Defina o número de arquivo de página swap, porque a tabela de página (página uma representação ou usar o bitmap livre) é colocado na memória no disco ,, cada oito páginas 1byte irá consumir memória. vm-páginas 134217728
  25. Defina o número de threads acessar o arquivo de swap, o melhor é não exceder o número de core máquina, se estiver definida para 0, então todas as operações sobre o arquivo de troca é de série, pode causar atrasos relativamente longos. O valor padrão é de 4 vm-max-fios 4
  26. Situado na resposta para o cliente, se os pacotes menores em um único pacote é enviado, ele é ativado por padrão sim glueoutputbuf
  27. Quando mais do que uma certa quantidade especificada ou o elemento máxima superior a um valor crítico, o algoritmo de hash utiliza um hash especial máximo-zipmap-entradas 64 de hash-max-512-zipmap valor
  28. Especifica se deve ativar o hash reset, é ativado por padrão activerehashing sim
  29. Designado incluir outros arquivos de configuração, você pode usar os mesmos arquivos de configuração entre várias instâncias Redis no mesmo host, enquanto que cada instância tem seu próprio perfil específico /path/to/local.conf a incluir
    tipos de dados Redis:
    Chaves tipo de caracteres não-binária de segurança (cordas não compatível com dados binários)

ValuesStrings Lista Sets Ordenado Hash conjuntos

Key: Redis natureza em um banco de dados de valor-chave, que primeiro olhar para a chave primeira chave é um tipo de cadeia, porque a chave não é binário string segura, assim como "minha chave" e "mykey \ n" assim. incluindo espaços e quebras de linha chave não é permitido.

Podemos definir o formato de uma chave ao usar o seu próprio. Por exemplo do tipo-objeto: o acima mencionado id: Campo,
Key não muito longo. memória total, consultas lentas.
Key não muito curto. u: 1000: pwd melhor para o usuário: 1000: a legibilidade boa senha

comandos relacionados-chave:

sai chave chave especificada teste existe e retorna 1 indicando a presença ou ausência de 0

del key1 key2 .... KEYN remover a chave dada, retornos tecla delete o número de 0 indica uma determinada chave não existe

chave tipo é retornado para o valor do tipo de determinada chave. Ou nenhuma disseram que não existia, tipo de personagem chave tem uma string, lista de lista constante tipo de coleção não ordenada, etc. ...

chaves padrão retornos que correspondem ao padrão especificado de todos os key (suporte *,?, [abc] a propósito), para o seguinte exemplo

Programador, quer entender completamente Redis, este de 15 pontos que você deve entender ~ (puro seco)
programador, eu quero entender completamente Redis, este de 15 pontos que você deve entender ~ (puro seco)
de retorno randomkey do banco de dados atual renomear uma chave selecionada aleatoriamente, se o banco de dados atual está vazio, string vazia é retornada OldKey newkey átomo pesado chamado uma chave, newkey se presente, será coberto, retorna um sucesso, falha 0. Fracasso não existe ou pode ser OldKey e newkey renamenx OldKey newkey o mesmo que acima, mas se houver falha de retorno dbsize newkey para retornar o número atual de banco de dados chave expirar chave segundos para o tempo de chave especificada de expiração, em segundos. 1 retorna sucesso, 0 tempo de expiração da chave já está definido, ou a configuração de chave tecla de retorno tempo TTL expiração não existe um restantes segundos de expiração, -1 indica chave não existe ou não é fornecida através do tempo de expiração seleccione db-índice seleccionado pelo banco de dados de índice o padrão é 0 para todas as conexões de banco de dados, número de banco de dados padrão é 16. Retorna 1 para o sucesso, 0 Falha chave movimento chave db-índice para mover a partir do banco de dados atual para o banco de dados especificado. Voltar 1 sucesso. 0 se a chave não existe ou foi excluído do banco de dados atual flushdb de toda chave no banco de dados especificado, este método não irá falhar. Flushall toda a cautela para remover todos os banco de dados chave, este método não irá falhar. mais cautela

Tipo de cadeia:

corda Redis é o tipo mais básico, e tipo de cadeia é segura para binários.

Redis A cadeia pode conter quaisquer dados. Incluindo imagem jpg ou objeto serializado. O limite máximo é 1G byte. Se apenas tipo string, Redis pode ser visto como uma vantagem memcached persistência características

cadeia de comando relacionadas:

valor de chave set string é definido correspondente ao tipo de chave de valor, retorna um sucesso, fracasso 0

setnx valor de chave acima, se a chave já existe, 0 é retornado. nx não existe valor de cadeia de aquisição chave get média tecla correspondente, se a chave é devolvido valor de chave Set valor de chave nilgetset não existe, e retorna o valor antigo da chave. Se a chave retornado não existe nilmget key1 key2 ... KEYN obtenção de uma pluralidade de valores da chave, se a chave correspondente não está presente, então os retornos correspondentes nulo. O que se segue é uma experiência, na ausência de nonexisting correspondentes retorna nil

Programador, quer entender completamente Redis, este de 15 pontos que você deve entender ~ (puro seco)
MSET key1 value1 ... KEYN valorN mais uma vez definir o valor da chave, o retorno bem sucedido de 1 significa que todos os valores são definidos, insuficiência retornar 0 significa nenhum valor for definido msetnx key1 value1 ... KEYN valorN acima, mas não substitui existente keyincr valores de chave fazer a operação chave Gaga, e retorna o novo valor. Nota incr que não é um valor int retornará um erro, incr uma chave inexistente, conjunto de chaves para 1decr chave acima, mas para fazer isso e redução de operações, decr a chave não existir, defina a chave para -1incrby inteiro chave com incr , mais o valor especificado, chave não existe quando ele vai definir a chave, e é considerado o valor original 0decrby inteiro chave com decr, menos o valor especificado. decrby apenas para facilitar a leitura, um valor negativo, podemos conseguir o mesmo efeito por incrby, pelo contrário o mesmo.

acrescentar valor chave para o valor da cadeia de caracteres valor acrescentado chave especificada, retorna o comprimento do novo valor da cadeia. A seguir exemplificam

Programador, quer entender completamente Redis, este de 15 pontos que você deve entender ~ (puro seco)
substr Início Fim retorno chave interceptação fora de uma série de valores-chave, a atenção não modifica o valor da chave. Índice é baseado em zero.

Tipo de lista:

Redis tipo de lista é realmente um tipo de corda para cada criança elementos são duplamente lista ligada. Nós podemos empurrar, as operações para adicionar ou remover elementos do final cabeça da lista pop. Isso torna tanto como uma lista de pilha, uma fila pode também ser usado.

operações, bem como a lista de versão bloqueada pop. Quando nós [LR] pop o objeto é uma lista, se a lista estiver vazia, ou não existe, retorna nil imediatamente. Mas a versão de b bloqueando [LR] pop pode, então, ser bloqueado, é claro, você pode adicionar tempo limite, também retorna nulo após um tempo limite. Por bloqueado versão pop do mesmo, principalmente para evitar polling. Como um exemplo simples, se usar a lista para alcançar uma fila de trabalho. thread pode executar tarefas chamar versões bloqueio de pop para obter a tarefa que você possa evitar de pesquisa para verificar se existem existem tarefas. Quando a tarefa de retornar imediatamente quando o segmento de trabalho também pode evitar o atraso causado por polling.

Lista de comandos relacionados:

lpush string de chave na lista de chaves que corresponde à cabeça de um elemento de string é adicionado, retorna um sucesso, e não a presença de 0 indica chave tipo de lista chave rpush supra corda, é adicionado no final llen Tecla de retorno correspondente ao comprimento da lista, chave de retorno não existe 0 , se a tecla correspondente para o tipo de erro não é retornado elementos de retorno lista de chaves lrange extremidade inicial dentro do intervalo especificado, o índice de início a partir de 0, os valores negativos indicam calculado a partir de trás, -1 representa o inverso do primeiro elemento, chave retornos ausentes um vazio chave lista LTRIM iniciar lista intercepção final, retido dentro da faixa especificada de elementos, o retorno bem sucedido uma, chave não existe devolver uma lista de chaves de erro LSet valor de índice alvo configuração valor elemento especificado, o retorno bem sucedido uma, chave ou a ausência de um subscrito devolver um valor de contagem chave erro lrem de chave para excluir a lista correspondente a contar os mesmos elementos de valor. Apagar tudo contagem chave lpop é zero quando elementos remover da lista da cabeça e retornos remover elementos. Se a chave correspondente à lista não existe ou é retornos vazias nulo, se a tecla correspondente ao valor não é devolvido uma lista de erros

RPOP acima, mas key1 blpop excluído da cauda ... KEYN tempo limite de varredura da esquerda para a direita para retornar à primeira lista não-vazia eram lpop e retorno, tais como blpop list1 list2 list3 0, se a lista não existe, list2, list3 não são para fazer lista2 lpop o ar e retorna o elemento removido da lista2. Se toda a lista estiver vazia ou não existe, bloqueando segundos de tempo de espera, tempo limite de 0 indica sido bloqueado. Quando bloqueado, se houver qualquer cliente na key1 chave ... KEYN realizada operação de impulso, a primeira chave no cliente é bloqueado imediatamente retorna. Se ocorrer um tempo limite, nil é retornado. brpop mesmo BLPOP, é removida a partir de uma cabeça de uma cauda de fuga suprimida destkey srckey rpoplpush a partir do correspondente srckey lista elemento removido e adicionou-se o correspondente destkey cabeça lista, e finalmente retorna o valor do elemento é removido, toda a operação é atómica Se srckey está vazio ou não existe retorna nil

Tipo de conjunto:

Redis conjunto de coleção não ordenada do tipo string. O conjunto máxima pode compreender elementos (32 th -12) de elementos. conjunto é implementado por uma tabela hash, tabela hash serão adicionados ou excluídos automaticamente como redimensionamento conjunto na coleção de tipo básico exceto operação de exclusão add, outras operações úteis e compreendendo ainda um take-conjunto de Assembly (União), o cruzamento (intersecção ), diferença (diferença). Você pode facilmente implementar sns função tag de amigos e blog recomendado por essas operações.

Definir comandos relacionados:

sadd membro chave para adicionar um elemento de cordas, conjunto correspondente ao conjunto de chave, retorna um sucesso, e retorna 0 se os elementos de um conjunto, a chave set correspondente ao membro chave srem retorno de erro a partir do conjunto tecla correspondente ao elemento de dado não está presente é removido , o retorno bem sucedido 1, se o membro não existe ou chave não existe retorno 0 se não for definido o tipo de valor da chave que corresponde a um erro é devolvido chave SPOP eliminação e tecla de retorno correspondente a um conjunto de elemento em forma aleatória, se o conjunto é vazio ou chave na coleção não existe a mesma chave nilsrandmember retorno SPOP, um elemento seleccionado ao acaso no conjunto, mas não remove elementos smove srckey membro membro dstkey é removida e adicionada ao conjunto correspondente a partir do correspondente conjunto dstkey srckey, toda a operação é atómica. Um retorno bem sucedido, se o membro não existe em retornos srckey 0, se a chave não conjunto de erro retorno chave tipo SCard retorno é o número de elementos no conjunto, se a chave do conjunto não existe ou é retorno vazio 0sismember membro chave determina se o membro do conjunto, na presença de 1,0 representa a chave de retorno não existe ou não existe sinter key1 key2 ... KEYN retornar toda a chave dada interseção sinterstore dstkey key1 ... KEYN com sinter, mas também irá salvar o cruzamento para o próximo dstkey

Sunion key1 key2 ... KEYN retornar toda a chave dada e conjunto sunionstore dstkey key1 ... KEYN com Sunion, e ao mesmo tempo para salvar e conjunto sdiff sob dstkey key1 key2 ... KEYN devolver todos dstkey o conjunto diferença sdiffstore dada a chave o key1 sdiff ... KEYN mesma, e, simultaneamente, define todos os elementos para salvar a diferença dstkey smembers conjunto de chaves correspondente à tecla de retorno, o resultado é desordenado

Ordenado Set Tipo:

E definido como conjunto classificado é uma coleção de elementos do tipo string, exceto que será associado a cada elemento de uma dupla tipo de pontuação. conjunto ordenado é alcançar uma mistura da lista Ir e tabela hash. Quando os elementos são adicionados à coleção, um elemento do mapa pontuação para ser adicionado à tabela hash, marcar o mapeamento outro elemento é adicionado à lista pular e ordenados de acordo com a pontuação, você pode obter um conjunto ordenado de elementos .

Ordenado Set comandos relacionados:

Zadd membro pontuação chave é adicionada ao elemento de recolha, o elemento de recolha está presente na contagem correspondente é actualizado

membro chave zrem excluir o elemento especificado representa um elemento de retorno bem-sucedido não existe se 0zincrby chave aumenta membros incr marcar valor correspondente ao membro, e depois mover a lista o elemento de retenção salto ordenada. Retorna os valores de pontuação actualizados zrank chave membro retorna o posto elemento especificado (subscrito, não pontuação) na recolha de elementos na coleção baseia-se na pontuação desde pequenas a grandes fim de membro chave zrevrank como acima, mas elementos na coleção baseia-se na contagem de grande a chave zrange operação final start lrange elementos espécie pequenas semelhantes secção designada tirada da coleção. Devolve os resultados ordenadas zrevrange chave supra extremidade inicial, o resultado é retornado pela zrangebyscore inversa marcar chave min pontuação máxima no conjunto de retorno dos elementos de um dado intervalo de chave zcount min pontuação máxima zcard o conjunto de retorno do número chave de um dado intervalo de retorno número definido de elementos zscore chave elemento retorna o elemento correspondente ao dado scorezremrangebyrank chave min max suprimido elemento na posição ajustada na dada colecção eliminação intervalo de pontuação dado intervalo elemento zremrangebyscore chave min max

Tipo de Hash:

campo de hash redis é um tipo de cadeia e o valor da tabela de mapeamento. de hash particularmente adequado para o armazenamento de objectos. Comparado com o depósito de cada campo em uma única seqüência tipo de objeto. Um tipo de objeto armazenado no hash vai ocupar menos memória, e pode ser o acesso mais conveniente para todo o objeto.

comandos relacionados Hash:

HSEt campo Chave valor do campo conjunto de hash para o valor especificado se a chave não existir, crie

hget chave campo recebe o hash especificado fieldhmget filed1 chave .... fieldN obter todas as hash da chave filedhmset value1 filed1 especificado ... filedN valorN também conjunto de hash múltipla fieldhincrby inteiro campo chave

Redis características:
persistência:

Redis é um suporte de banco de dados de memória persistente, que Redis muitas vezes precisam sincronizar os dados na memória para o disco para garantir a persistência, que é uma grande vantagem é a relativamente memcache. Redis suporta duas formas persistentes, um é snapshotting (instantâneo) é o modo padrão, o outro é uma forma de arquivo Anexar-only (abreviatura AOF). Snapshotting instantâneo é a maneira persistente padrão. Desta forma, os dados da memória como um instantâneo escrito para o arquivo binário, o nome do arquivo padrão é dump.rdb. Ele pode ser configurado para fazer automaticamente um instantâneo de forma persistente. Podemos configurar Redis em n segundos Se mais de tecla m foi modificado para automaticamente fazer um snapshot, o seguinte é o instantâneo padrão salvar a configuração salvar 900 1 Nº 900 segundos, se mais de uma chave é modificado, então o instantâneos iniciar save save 300 10 # 300 segundos conteúdo, como mais de 10 chave é modificado, em seguida, guardado um instantâneo lançado

Acrescentar-only arquivo

AOF melhor do que instantâneos resistência duradouras, devido ao uso AOF forma persistente, Redis vai cada comando de escrita recebido através da função de gravação para ser adicionado a um arquivo (o padrão é appendonly.aof). Quando Redis reiniciar salvo por comando de escrita de arquivo execução re-para reconstruir o seu banco de dados inteiro na memória. Claro, porque o sistema operacional irá modificar cache de gravação para fazer no kernel, pode não ser imediatamente gravados no disco. Persistência forma AOF também ainda possível perder algumas modificações. Mas podemos dizer por redis perfil queremos forçar OS gravados no disco através da função de sincronismo fsync.

Existem três formas da seguinte forma (padrão: fsync uma vez por segundo)

appendOnly sim // Ativar AOF maneira persistente

appendfsync sempre // cada vez que recebe um comando de escrita para forçar uma gravação imediato para o disco, o mais lento, mas para garantir a persistência completa, não é recomendado

appendfsync everysec // uma vez por segundo obrigatória gravado no disco, desempenho e persistência tem feito um bom compromisso, recomendado

appendfsync OS no // totalmente dependente, o melhor desempenho, persistência não garantia

replicação mestre-escravo:

replicação mestre-escravo permite que o servidor escravo múltipla e um servidor principal tem a mesma cópia do banco de dados. Aqui são algumas das características de redis 1.master mestre de replicação pode ter uma pluralidade de slave2. Além da pluralidade de escravo conectada à mesma mestre externo, escravo 3 pode ser ligado a uma outra estrutura mestre-escravo formada a partir de cópia mestre FIG não vai ser bloqueada. Ou seja, quando um ou mais mestre e escravo para dados de sincronização inicial, o cliente mestre pode continuar a processar os pedidos recebidos. escravo Por outro lado, durante os dados de sincronização inicial será bloqueado, não pode solicitações do cliente do processo. 4. A partir da cópia mestre pode ser usado para melhorar a escalabilidade do sistema (que pode usar uma pluralidade de pedido escravo dedicado leitura do cliente, tais como operações de processamento de ordenação pode ser usado para escravo), ele também pode ser usado para redundância de dados simples. O mestre pode desativar a persistência de dados, só poupar precisa comentar toda a configuração perfil mestre, e então somente no slave dados de configuração persistente.

Programador, quer entender completamente Redis, este de 15 pontos que você deve entender ~ (bens pura secos)
transações:

Redis suporte para transações ainda é relativamente simples. Redis só pode garantir um cliente comandos transação iniciada pode ser executado de forma contínua, mas o meio não insere ordens de outros clientes. Multi Exec as coisas começaram a executar uma operação de descarte desistir de coisas relógio monitor keyUnwatch dão o monitor relógio todos os comandos chave irá monitorar uma determinada chave, quando o tempo de exec chave se o monitor tinha mudado depois de chamar relógio, toda a transação falha. Nota assistir a chave inteira é conexão válida, e da mesma transação, se desligado, monitoramento e transação será automaticamente removido.

Transação Demonstração:

Programador, quer entender completamente Redis, este 15:00 você deve entender ~ (puro seco)
programador, quer entender completamente Redis, este 15:00 você deve entender ~ (puro seco)
programador, você quer completamente entender Redis, este de 15 pontos que você deve entender ~ (puro seco)
programador, eu quero entender completamente Redis, este de 15 pontos que você deve entender ~ (puro seco)

Publicar e assinar:

Publicar e subscrever (pub / sub) é um modo de mensagens de comunicação. Os assinantes podem se inscrever para digitar suas próprias mensagens de interesse para o servidor Redis por meio de subscrição e de comando psubscribe, Redis tipo de mensagem é chamada de canal (channel). Quando um editor envia um determinado tipo de mensagem para o Redis servidor através do comando publicar. Todos os tipos assinatura de cliente da mensagem receberá esta mensagem. Aqui, a transmissão da mensagem é de muitos para muitos. Um cliente pode se inscrever em vários canais, você pode enviar mensagens para uma pluralidade de canais. SubscribeUnsubscribePsubscribePunsubscribePublish

Publicar e assinar demonstração:

Um cliente:

Programador, quer entender completamente Redis, este de 15 pontos que você deve entender ~ (puro seco)
Cliente II:

Programador, quer entender completamente Redis, este de 15 pontos que você deve entender ~ (puro seco)
Cliente Três:

Programador, quer entender completamente Redis, este de 15 pontos que você deve entender ~ (puro seco)

Pipeline:

Modo cs é uma Redis tcp servidor, uso e similares http pedido protocolo de resposta. Cliente pode iniciar um comando de pedido de ligação através de uma pluralidade de socket. Cada comando pedido emitido depois que o cliente normalmente bloqueia e aguarda Redis processamento de serviço, Redis lidou com o comando de solicitação resultará através de um pacote de volta resposta para o cliente. O processo de comunicação básico é o seguinte cliente: INCR

XServer: 1

Cliente: INCR

XServer: 2

Cliente: INCR

XServer: 3

Cliente: INCR

XServer: 4 basicamente quatro comandos requerem oito pacotes TCP para completar. Desde a comunicação para a latência da rede, se necessário 0,125 segundos do tempo de transmissão de pacotes entre o cliente eo servidor. Em seguida, o acima de quatro comandos oito pacotes terá pelo menos um segundo para terminar.

O oleoduto é embalado usando vários comandos emitidas a partir do cliente em conjunto, sem esperar por uma resposta única comando é retornado, pluralidade após o fim do serviço será processado redis de comando define uma pluralidade de comandos para devolver o resultado de processamento embalados juntos para o cliente. O processo de comunicação é como se segue

Cliente: INCR

Xclient: INCR

Xclient: INCR

Xclient: INCR

XServer: 1

Servidor: 2

Servidor: 3

Servidor: 4

Memória Virtual:

não Redis usar OS mecanismo de memória virtual fornecido, mas percebeu seu próprio mecanismo de memória virtual, mas as idéias e objetivos são os mesmos. É temporariamente pouco acessados ​​os dados da memória é trocado para o disco, liberando espaço de memória para precisam ser acessados ​​outros dados. Especialmente para tal Redis banco de dados de memória, a memória não é sempre suficiente. Além disso os dados podem ser divididos numa pluralidade de servidor redis exterior. Em outra capacidade do banco de dados pode ser aumentada maneira vm é usar os dados que são pouco acessados ​​troca de disco. Se o nosso armazenamento de dados é sempre uma pequena parte dos dados é acessado com freqüência, a maioria dos dados é raramente acessado, o site é realmente sempre por apenas alguns poucos usuários são muitas vezes ativa. Quando uma pequena quantidade de dados a serem acessados ​​com freqüência, usando o vm não só irá aumentar a capacidade de um único banco de dados servidor Redis, e não causar muito impacto no desempenho. vm-habilitado sim # abrir a-swap-file vm /tmp/redis.swap # valor de troca função vm salvou o caminho do arquivo /tmp/redis.swapvm-max-memory 1000000 # limite máximo de memória, mais do que o início do valor de troca no disco arquivo vm-páginas tamanho 32 # cada tamanho de página de 32 bytes vm-páginas 134217728 # até quantas páginas VM-max-threads # 4 número de threads de trabalho para a execução de um objeto trocado valor utilizado no documento 0 significa ausência de segmentos de trabalho

desempenho Redis:
programadores querem entender completamente Redis, este 15:00 você deve entender ~ (puro seco)
Redis Implantação:
programadores querem entender completamente Redis, este 15:00 você deve entender ~ (puro seco)
Redis cenários de aplicação:
1. tomar o N-date operando de dados, tais como típico take seu site o mais recente artigo, da seguinte forma, podemos rever o mais recente 5000 coleção de ID na Lista de Redis, ea parte além do conjunto obter latest.comments uso LPUSH <ID> comando do banco de dados, inserir dados na lista após a conclusão da inserção de recolha com LTRIM latest.comments 0 5000 comando para que é sempre só poupa a última 5000 ID, em seguida, temos um comentário página no cliente quando a lógica pode utilizar os seguintes (em pseudocódigo) get_latest_comments FUNÇÃO (iniciar, NUM_ITEMS) : ID_LIST = redis.lrange ( "latest.comments", começar, começar + NUM_ITEMS-1) se id_list.length <NUM_ITEMS ID_LIST = SQL_DB ( "SELECT ... ORDER BY limite de tempo ... ") END RETURN ID_LIST END Se você tem diferentes dimensões de filtro, como as últimas partes N de uma categoria, então você pode construir uma classificação Click A lista, só manter ID, então, Redis é muito eficiente.

2. Aplicação de gráficos, operações tomam TOP N

Isso é diferente das necessidades do requisito acima que a operação anterior ponderada no tempo, esta é uma condição para os pesos, como por tipo topo, desta vez precisamos de um conjunto classificado para concorrer, você vai querer tipo valor é definido para marcar conjunto ordenado dos dados específicos que correspondem ao valor de ajuste, uma vez que requerido para executar um comando Zadd. 3. aplicações que requerem precisão para definir o tempo de expiração de tal valor pode pontuação acima indicado ordenadas definir o conjunto de tempo de expiração do carimbo de tempo, então ele pode simplesmente ordenar por tempo de expiração, tempo para limpar dados antigos, não só é limpa Redis de dados antigos, você pode colocar no tempo de expiração como Redis é um índice dos dados no banco de dados, o uso Redis para descobrir o que as necessidades de dados para apagar desatualizado, então precisamente excluir os registros do banco de dados. 4. Aplicação do contador comandos Redis são atômicas, você pode facilmente usar INCR, contadores decr comando para construir o sistema.

5.Uniq operação, adquirir determinado período de tempo tal que todos os dados re-uso de Redis definir o valor dessa estrutura de dados é mais adequado, e só precisa manter os dados para definir o lance na linha, ou seja, um conjunto de coleta, ele será automaticamente re-classificado. 6. sistemas de tempo real, anti-spam set sistema pelas características acima mencionadas, você pode saber se o usuário final uma determinada operação, você pode encontrar uma coleção de sua operação e estatísticas comparadas. Não é impossível, só acho. 7.Pub/Sub para construir em tempo real sistema de mensagens Redis Pub / Sub sistema pode construir um sistema de mensagens em tempo real, como muitos exemplos de sistemas com chat em tempo real Pub / Sub construído. 8. lista fila de sistema de construção pode ser construído usando o sistema de fila, construído usando o conjunto classificado pode até ter sistema de fila de prioridade. 9. O cache Escusado será dizer que, o desempenho é melhor do que Memcached (em alguns aspectos, não é superior a todos), a estrutura de dados é mais diversificada.

resumo Redis:
Redis é a melhor maneira de usar todos os dados na memória. Mais cenas Redis é usado como um substituto para o Memcached. Quando tipos mais dados suportados, além de valor de chave / usando Redis mais apropriado. Quando os dados armazenados não pode ser removido, o uso de Redis mais apropriadas. (Persistência)

E um acesso eficiente aos dados armazenados nos dados de leitura e gravação simultâneas de dados em massa para a alta escalabilidade e alta disponibilidade (distribuído)

Que problemas ou tem alguma idéia diferente, bem-vindo a comunicação de mensagens

Nota especial: Este material artigo a partir da rede, apenas para compartilhar o aprendizado, se a violação, entre em contato apagado!

Leitura recomendada

Redis 2020. entrada para o mestre conjunto completo de tutoriais em vídeo (bens pura secas Series)

Acho que você gosta

Origin blog.51cto.com/14751386/2480847
Recomendado
Clasificación