Redis
 sql >> Base de données >  >> NoSQL >> Redis

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

Oui, redis est bon pour ça. Mais pour comprendre l'essentiel, il existe essentiellement deux approches de la mise en cache. Selon que vous utilisez un framework (et lequel) ou non, vous pouvez avoir une 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 vidé (utile après la mise à jour de la base de données). Dans ce cas, vous pouvez utiliser la mise en cache des requêtes mysql intégrée, ce sera plus simple que d'utiliser un magasin clé-valeur supplémentaire, ou vous pouvez remplacer l'intégration de la base de données par défaut avec votre propre classe en utilisant le 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 des fonctionnalités Redis intégrées telles que des listes ou des ensembles triés, ce qui réduit considérablement la charge de mise à jour. Cela nécessite un peu plus de codage, mais il offre généralement de meilleurs résultats, car il est plus personnalisé. Un bon exemple consiste à conserver les meilleurs articles sous la forme d'une liste d'identifiants redis, puis à accéder aux articles sérialisés avec l'identifiant donné également à partir de redis. Vous pouvez garder cet article non normalisé - c'est-à-dire. l'objet sérialisé peut contenir l'identifiant de l'utilisateur ainsi que le nom de l'utilisateur, afin que vous puissiez réduire au minimum la surcharge de requêtes supplémentaires.

C'est à vous de décider quelle approche adopter, personnellement, je vais presque toujours avec l'approche numéro deux. Mais, bien sûr, tout dépend du temps dont vous disposez et de ce que l'application est censée faire - vous pouvez aussi bien commencer par la mise en cache des requêtes mysql et si les résultats ne sont pas assez bons, passez à redis et à la mise en cache personnalisée.