Utilisation de redis comme cache pour une base de données mysql

je dois créer une solution en utilisant php, avec une base de données mysql avec beaucoup de données. Mon programme aura beaucoup de réquisitions, je pense que si je travaille avec cache et une base de données OO, j'aurai un bon résultat, mais je n'ai pas d'expérience.

je pense par exemple que si je cache l'information qui est sauvegardée dans mysql dans une base de données redis, la performance sera améliorée, mais je ne sais pas si c'est une bonne idée, donc je voudrais que quelqu'un m'aide à choisir.

Désolé si mon L'anglais n'est pas très bon, je suis du Brésil.

25
demandé sur Simon MᶜKenzie 2013-04-29 02:59:19
la source

1 ответов

Oui, redis est bon pour cela. Mais pour comprendre l'essentiel, il y a essentiellement deux approches à la mise en cache. Selon que vous utilisez un framework (et lequel) ou non, vous pouvez avoir la première option disponible en standard ou avec l'utilisation d'un plug-in:

  1. Cache les requêtes de la base de données, c'est - à-dire les requêtes sélectionnées et leurs résultats seront conservés dans redis pour un accès plus rapide pendant un temps donné ou jusqu'à ce que le cache soit effacé (utile après mise à jour de la base de données). Dans ce cas, vous pouvez utiliser la requête mysql intégrée la mise en cache, ce sera plus simple que d'utiliser des clés supplémentaires de stockage de valeur, ou vous pouvez outrepasser l'intégration de base de données par défaut avec votre propre classe faisant usage de cache (par exemple http://pythonhosted.org/johnny-cache/).
  2. mise en cache personnalisée, c'est-à-dire créer vos propres structures à conserver dans le cache et les remplir périodiquement ou manuellement avec des données extraites de la base de données. Il est plus flexible et potentiellement plus puissant, car vous pouvez utiliser les fonctionnalités intégrées de redis telles que: listes ou ensembles triés, qui rendent la mise à jour de frais généraux beaucoup plus petit. Cela nécessite un peu plus de codage, mais il donne en général de meilleurs résultats, car il est plus personnalisé. Un bon exemple est de conserver les principaux articles sous forme de liste d'ids redis, puis d'accéder aux articles sérialisés avec un id donné ainsi que de redis. Vous pouvez garder cet article unnormalized-ie. objet sérialisé peut contenir des id d'utilisateur ainsi que le nom d'utilisateur, de sorte que vous pouvez garder la surcharge de requêtes supplémentaires à un minimum.

c'est à vous de décider quelle approche prendre, personnellement je suis presque toujours avec l'approche numéro deux. Mais, bien sûr, tout dépend de combien de temps vous avez, et ce que l'application est censée faire - vous pourriez aussi bien commencer par MySQL interrogation cache et si les résultats ne sont pas assez bon mouvement vers redis et personnalisé cache.

47
répondu Krzysztof Bujniewicz 2013-04-29 18:10:28
la source

Autres questions sur