Quão seguro é armazenar sessões com Redis?
3 answers
- Se não puder perder nenhuma sessão, defina {[[0]} na sua configuracao. Com isso, Redis garante que quaisquer operações de escrita são salvos no disco. A desvantagem é que as operações de escrita serão mais lentas.
- Se não se importar de perder cerca de 1s de dados, use
appendfsync everysec
. Isso dará um grande desempenho com garantias razoáveis de Dados
Basicamente existem dois tipos principais disponíveis: snapsnots async e fsync()
. Chamam-se RDB e AOF, respectivamente. Mais sobre os modos de persistência na página oficial.
O tratamento de sinais do processo daemonizado sincroniza-se ao disco quando recebe um SIGTERM, por exemplo, de modo que os dados ainda estarão lá após um reboot. Eu acho que o daemon ou o SO tem que estoirar antes que você veja uma corrupção de integridade, mesmo com as configurações padrão (instantâneos RDB).
The AOF a configuração usa um ficheiro de anexação que regista os comandos que o servidor recebe, e recria o DB do zero no arranque a frio, a partir do ficheiro gravado. A Política padrão de sincronização de disco é puxar o autoclismo uma vez a cada segundo (IIRC), mas pode ser definido para bloquear e escrever em cada comando.
Usar tanto os instantâneos como o log incremental parece oferecer tanto uma abordagem a longo prazo não se importe-se-eu-falhe-alguns-segundos-de-Dados com uma abordagem incremental mais segura, mas dispendiosa. Redis suporta agrupamento para fora da caixa, assim a replicação pode ser feita também parece.
Estou a usar a configuração predefinida do RDB e a gravar as imagens para FTP remoto. Ainda não vi uma falha que tenha causado uma perda de dados. Falha aguda de hardware ou falha de energia provavelmente, mas estou hospedado num VPS. Poucas hipóteses de isso acontecer.
Esta pergunta é realmente sobre em tempo real sessões, e parece ter surgido, em parte, devido a um mal-entendido da frase 'atrasada operações de escrita", Enquanto que os detalhes foram eventualmente provocado nos comentários, eu só queria torná-lo super-duper claro...
Você não terá problemas em implementar sessões em tempo real.
O Redis é um armazém de valores-chavena memória com persistência opcional no disco. "Operações de escrita diferida" refere-se a escreve no disco , não no banco de dados em geral, que existe na memória. Se você definir um par chave / valor, você pode obtê-lo imediatamente (I. E. em tempo real). A política que Seleccionar em relação à persistência (quanto é que atrasa as escritas) irá determinar o limite superior para a quantidade de dados que poderá ser perdida num estoiro.