Quão seguro é armazenar sessões com Redis?

Estou a usar o MySql para guardar as minhas sessões. Funciona bem, mas é um pouco lento.

Pediram-me para usar o Redis, mas pergunto-me se será boa ideia, porque ouvi dizer que o Redis delays escreve operações. Tenho um pouco de medo, porque as sessões têm de ser em tempo real.

Alguém teve tais problemas?

Author: Jordan Dodson, 2012-04-23

3 answers

O Redis é perfeito para armazenar sessões. Todas as operações são realizadas em memória, e assim ler e escrever será rápido. O segundo aspecto é a persistência do Estado de sessão. O Redis dá-lhe muita flexibilidade na forma como deseja persistir o estado de sessão do seu disco rígido. Você pode passar por http://redis.io/topics/persistence para saber mais, mas a um alto nível, Aqui estão as suas opções -
  1. 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.
  2. 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
 116
Author: Sripathi Krishnan, 2012-04-23 11:22:34

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.

 11
Author: Morten Jensen, 2015-02-15 21:53:37

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.

 2
Author: Jordan Dodson, 2018-03-27 04:24:41