2010-09-24 7 views
0

Comment évolutive memcache dans un environnement où un cache est potentiellement expiré chaque seconde. En fait, ma question ne porte pas seulement sur l'évolutivité de memcached, mais sur les situations où un modèle est en constante évolution et la meilleure façon de faire évoluer ce type d'environnement. On pourrait dire, pourquoi cache si le cache est expiré chaque seconde.Évolutivité memcached et statistiques de vote efficaces

Considérez ceci dans une application hypothétique, où les gens affichent des messages de marquage comme favoris et considérons simplement qu'il y a des milliers de personnes marquant constamment des articles favoris et créant ainsi un enregistrement favori. Avec chaque insertion, la vue de publication doit être mise à jour pour afficher les statistiques actuelles sur les publications, le nombre de personnes préférées, le nombre de favoris de l'utilisateur, etc

Nous pensions que cela pourrait être mis en cache pour afficher uniquement un instantané pris tous les jours. x beaucoup de minutes ... mais y a-t-il un bon moyen de rendre cela plus réel dans les rails?

+0

Je suggère de modifier le titre. 'stats de vote memcached et efficace' – gertas

Répondre

0

Essayez cette algo:

  1. enregistrements de mise à jour de db pour poste avec 1 vote
  2. Créer de la valeur de cache || mise à jour du cache existant +1 pour le nombre de faveurs
  3. Créer une valeur de cache || mettre à jour le cache existant +1 pour l'utilisateur nombre fav

Parce que le cache n'a pas de valeur des transactions peut être pas compatible avec les valeurs actuelles DB - parallèle rare lecture et d'écriture condition de course peut se produire. Mais ces incohérences expireront dès que l'entrée du cache sera invalidée et que les valeurs seront recalculées à partir de DB.

Dans le scénario ci-dessus, une opération de balayage de cache peut être effectuée toutes les minutes ou même toutes les heures - en fonction de la précision des statistiques. Rappelez-vous que vous ne perdez rien - toutes les données précises sont conservées dans la base de données. Le plus important ici est que les utilisateurs voient le changement de valeur en temps réel pour le vote. Le coût en lecture/écriture de Memcached est nettement inférieur à celui de la base de données ici car memcache est juste un magasin de hachage multi-accès sans transactions.