Quand utiliser Redis au lieu de MySQL pour les applications PHP?

J'ai regardé Redis. Il a l'air très intéressant. Mais d'un point de vue pratique, dans quels cas serait-il préférable d'utiliser Redis sur MySQL?

57
demandé sur james.bcn 2010-10-19 12:53:56

4 réponses

Ignorant tout le débat NoSQL vs SQL, je pense que la meilleure approche est de les combiner. En d'autres termes, utilisez MySQL pour certaines parties du système (recherches complexes, transactions) et redis pour d'autres (performances, compteurs, etc.).

Dans mon expérience, les problèmes de performance liés à l'évolutivité (beaucoup d'utilisateurs...) vous oblige finalement à ajouter une sorte de cache pour supprimer la charge du serveur MySQL et redis/memcached est très bon à cela.

72
répondu Martin Wickman 2018-07-19 16:58:49

Je ne suis pas un expert Redis, mais d'après ce que j'ai compris, les deux sont assez différents. Redis:

  • n'est pas une base de données relationnelle (pas d'organisation de données de fantaisie)
  • stocke tout en mémoire (plus rapide, moins d'espace, probablement moins sûr en cas de crash)
  • est moins largement déployé sur différents hébergeurs (si vous n'hébergez pas vous-même)

Je pense que vous pourriez vouloir utiliser Redis pour quand vous avez une petite quantité de données qui n'a pas besoin du relationnel structure que MySQL offre, et nécessite un accès rapide. Cela pourrait par exemple être des données de session dans une interface Web dynamique qui doit être accessible souvent et rapidement.

Redis pourrait également être utilisé comme cache pour certaines données MySQL auxquelles on accède très souvent (c'est-à-dire: le charger lorsqu'un utilisateur se connecte).

Je pense que vous posez la question dans le mauvais sens, vous devriez vous demander lequel est le plus adapté à une application, plutôt que quelle application est adaptée à un système ;)

20
répondu Thomas 2010-10-19 09:16:10

MySQL est un magasin de données relationnelles. Si elle est configurée (par exemple en utilisant innodb tables), MySQL est une offre de stockage de données fiable acide transactions.

Redis est une base de données NoSQL. Il est plus rapide (s'il est utilisé correctement ) car il négocie la vitesse avec fiabilité ( Il est rare de fonctionner avec fsync car cela nuit considérablement aux performances ) et aux transactions (qui peuvent être approximées-lentement-avec SETNX).

Redis a des fonctionnalités très soignées telles que les ensembles, les listes et les listes triées.

Ces diapositives sur Redis énumèrent la collecte de statistiques et la gestion des sessions à titre d'exemples. Il y a aussi un clone twitter écrit avec redis à titre d'exemple, mais cela ne signifie pas que twitter utilise redis (twitter utilise MySQL avec une mise en cache memcache lourde).

12
répondu Will 2010-10-19 09:24:08

MySql -

1) données structurées 2) acide 3) transactions lourdes et recherches.

Redis -

1) Données non structurées 2) recherches simples et rapides. pour par exemple - jeton d'une session 3) Utilisez-le pour la couche de mise en cache.

5
répondu Preetham R U 2015-12-08 20:47:15