Est-il sécuritaire de stocker des sessions avec Redis?

J’utilise actuellement 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 retarde les opérations d’écriture. J’ai un peu peur car les sessions doivent être en temps réel.

Quelqu’un at-il connu de tels problèmes?

Redis est parfait pour stocker des sessions. Toutes les opérations sont effectuées en mémoire, donc les lectures et écritures seront rapides.

Le deuxième aspect est la persistance de l’état de session. Redis vous offre une grande souplesse dans la manière dont vous souhaitez conserver l’état de session sur votre disque dur. Vous pouvez parcourir http://redis.io/topics/persistence pour en savoir plus, mais à un niveau élevé, voici vos options –

  1. Si vous ne pouvez pas vous permettre de perdre des sessions, définissez appendfsync always dans votre fichier de configuration. Grâce à cela, Redis garantit que toutes les opérations d’écriture sont enregistrées sur le disque. L’inconvénient est que les opérations d’écriture seront plus lentes.
  2. Si vous êtes d’accord pour perdre environ une valeur de données, utilisez appendfsync everysec . Cela donnera d’excellentes performances avec des garanties de données raisonnables

Fondamentalement, il existe deux types principaux disponibles: snapsnots async et fsync() . Ils s’appellent respectivement RDB et AOF. Plus sur les modes de persistance sur la page officielle .

Le traitement du signal du processus démonisé se synchronise sur le disque lorsqu’il reçoit un SIGTERM par exemple, de sorte que les données seront toujours présentes après un redémarrage. Je pense que le démon ou le système d’exploitation doit tomber en panne avant de voir une corruption d’intégrité, même avec les parameters par défaut (instantanés RDB).

Le paramètre AOF utilise un fichier Ajouter uniquement qui enregistre les commandes reçues par le serveur et recrée la firebase database à partir du fichier enregistré lors d’un démarrage à froid. La politique de synchronisation de disque par défaut doit vider une fois par seconde (IIRC) mais peut être définie pour être verrouillée et écrite sur chaque commande.

L’utilisation à la fois des instantanés et du journal incrémentiel semble offrir une approche à long terme, ne vous souciez pas si je me trompe, de quelques secondes de données , avec un journal incrémentiel plus sécurisé mais coûteux. Redis prend en charge la mise en cluster hors de la boîte, de sorte que la réplication peut aussi être faite, semble-t-il.

J’utilise moi-même le paramètre RDB par défaut et enregistre les instantanés sur le FTP distant. Je n’ai pas encore vu de panne causant une perte de données. Une défaillance matérielle aiguë ou des coupures de courant sont très probables, mais je suis hébergé sur un VPS. Faible chance que cela se produise 🙂

Cette question concerne les sessions en temps réel et semble être due en partie à une incompréhension de l’expression «opérations d’écriture différée». Alors que les détails ont finalement été révélés dans les commentaires, je voulais juste que ce soit clair. ..

Vous n’aurez aucun problème à implémenter des sessions en temps réel.

Redis est un magasin de valeurs-clés en mémoire avec une persistance facultative sur le disque. «Opérations d’écriture différée» fait référence aux écritures sur le disque , et non à la firebase database en général, qui existe en mémoire. Si vous définissez une paire clé / valeur, vous pouvez l’obtenir immédiatement (c’est-à-dire en temps réel). La politique que vous sélectionnez en ce qui concerne la persistance (combien de temps vous retardez les écritures) déterminera la limite supérieure de la quantité de données pouvant être perdue lors d’un plantage.