104 votes

Est-il sécuritaire de stocker une session avec Redis?

J'utilise actuellement db (mysql) pour stocker mes sessions. Cela fonctionne très bien mais c'est un peu lent.

On m'a demandé d'utiliser Redis, mais je me demande si c'est une bonne idée, car j'ai entendu dire que Redis retardait les opérations d'écriture, j'ai donc un peu peur, car les sessions doivent être des temps réels.

Avez-vous rencontré de tels problèmes?

157voto

Sripathi Krishnan Points 15402

Redis est parfait pour le stockage des sessions. Toutes les opérations sont effectuées dans la mémoire, et ainsi de lit et écrit sera rapide.

Le deuxième aspect est la persistance de l'état de la session. Redis vous donne beaucoup de flexibilité dans la façon dont vous voulez persister à l'état de session de votre disque dur. Vous pouvez aller à travers les http://redis.io/topics/persistence pour en savoir plus, mais à un niveau élevé, voici vos options -

  1. Si vous ne pouvez pas se permettre de perdre toutes les sessions, définissez appendfsync always dans votre fichier de configuration. Avec cela, Redis garantit que toutes les opérations d'écriture sont enregistrés sur le disque. L'inconvénient est que les opérations d'écriture sera plus lent.
  2. Si vous êtes d'accord avec une perte d'environ 1s de données, utilisez appendfsync everysec. Cela donnera une grande performance avec des données raisonnables garanties

14voto

Morten Jensen Points 1821

Fondamentalement, il existe deux principaux types disponibles: async snapsnots et fsync(). Ils sont appelés RDB et de l'AOF, respectivement. Plus sur la persistance de modes sur la page officielle.

Le traitement du signal de la automatiquement le processus de synchronisation sur le disque lorsqu'il reçoit un signal SIGTERM par exemple, si les données sont toujours là après un redémarrage. Je pense que le démon ou le système d'exploitation doit crash avant que vous verrez un de l'intégrité de la corruption, même avec les paramètres par défaut de la RDB (captures d'écran).

Les autres AOF paramètre utilise la concaténation Seul Fichier qui enregistre les commandes, le serveur reçoit, et recrée la DB à partir de zéro sur un démarrage à froid, à partir du fichier sauvegardé. Le disque par défaut de synchronisation de la politique est à la seconde (IIRC), mais peut être configuré pour verrouiller et d'écrire sur chaque commande.

En utilisant à la fois les instantanés et les journaux incrémentielle semble offrir à la fois long terme ne sont pas à l'esprit-si-je-miss-a-quelques-secondes de données avec une approche plus sécuritaire, mais différentiels coûteux journal. Redis prend en charge le clustering hors de la boîte, de sorte que la réplication peut être fait trop, il me semble.

Je suis en utilisant la valeur par défaut de la RDB me fixer et de sauver les instantanés pour FTP distant. Je n'ai pas vu un échec qui a causé une perte de données encore. Aiguë de panne du matériel ou des pannes de courant serait le plus probable, mais je suis hébergé sur un VPS. Mince chance que ça se passe :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X