12
votes

Quand utiliser Memcached

i sortta obtenez comment fonctionne Memcached. Vous utilisez cela stocker des morceaux de données pour améliorer les performances du site. Lorsque vous souhaitez extraire des données, vous vérifiez si c'est dans MemCached en premier, si vous le récupérez, vous le récupérez, sinon vous vérifiez votre base de données / système de fichiers, etc. P> Je ne sais pas comment / quand l'utiliser? Quelle serait une bonne opportunité?

J'ai les tableaux suivants:

Auteur:

ID Nom d'utilisateur Email Mot de passe Sel Email_salt Email_verified IP_ADDRESS

Auteur_threads:

thread_id, auteure_id

thread:

ID, titre, contenu, créé

tag:

ID, nom

thread_tags:

tad_id, thread_id

Je souhaite sélectionner les 30 derniers threads, leur auteur et toutes leurs balises. Ceci est l'instruction SQL que j'utilise: xxx

Ceci est le php que j'utilise: xxx

où / comment Memcached soit utilisé ici?


0 commentaires

3 Réponses :


1
votes

La liste des derniers threads sera probablement demandée par de nombreux utilisateurs de votre site, alors cacher l'ensemble du résultat SQL à l'aide de sons memcached comme une opportunité parfaite.

Une approche très simple de Memcached consiste à utiliser des requêtes SQL sous forme de clés et de résultats respectifs en tant que valeurs ( c'est-à-dire voir ce tutoriel ici ). Vous voudrez peut-être essayer d'abord sur toutes les requêtes de base de données haute fréquence et profilez le résultat avant de commencer à optimiser davantage.


1 commentaires

SQL ne fait pas ce type de mise en cache de requête déjà? Ou est-ce que le cache expiration est très bref là-bas?



1
votes

Il n'y a pas de directives définies sur quand l'utiliser. Vous devez déterminer quelles requêtes de base de données sont les plus fréquentes et / ou les plus coûteuses et les cachent ceux-ci. Dans votre cas, je voudrais probablement cacher le résultat de cet appel de fonction.

Où je serais confus (comme vous pouvez le faire) est ce que font les nouveaux threads. Votre requête va donner des résultats différents à chaque fois que quelqu'un crée un fil. Donc, ce que vous devriez faire dans ce cas, lorsque quelqu'un crée un thread, consiste à mettre à jour la base de données, puis à ajuster votre résultat défini dans le cache en éliminant le fil le plus ancien et en ajoutant le nouveau. Vous n'avez même pas besoin de recharger les 30 derniers threads du cache, car il sera mis à jour.


0 commentaires

11
votes

Je ne sais tout simplement pas comment / quand l'utiliser?

Utiliser uniquement une fois que vous avez prouvé que l'ajout de la mise en cache est la meilleure performance boost Vous pouvez obtenir . Ajout de la mise en cache de données ou de la mise en cache de sortie à une application complexe qui n'avait auparavant pas une sorte de mise en cache peut découvrir un grand nombre de bogues subtils et de comportement bizarre.

Utilisez un profileur de code d'abord . Découvrez où votre code a problèmes de performance réels . Identifier les goulots d'étranglement et les réparer. Si ce correctif implique la mise en cache, alors soyez-le, mais rassembler des preuves d'abord .


1 commentaires

Merci beaucoup pour l'idée d'utiliser le profileur de code.