7
votes

Memcached - obtenez et définir des opérations atomiques?

Voici le scénario: un site simple qui interroge un cache memcached. Le même cache est mis à jour par un travail par lots toutes les 10-15 minutes. Avec ce motif y a-t-il quelque chose qui pourrait mal tourner (par exemple, cache Mlle)?

Je suis concerné par toutes les conditions de course possibles pouvant survenir. Par exemple, si le site Web obtient une opération d'obtention d'un objet mis en cache dans MemCached tandis que le même objet est remplacé par le travail de lot, que se passera-t-il?


0 commentaires

3 Réponses :


6
votes

Mon instinct initial était que vous devriez être capable de lire / écrire à partir d'un cache memcached sans effets secondaires (autres qu'une possibilité de données rassis en raison de conditions de race).

sur la FAQ de Memcached:

est memcached atomique? À part tous les bugs, vous pouvez rencontrer, oui tous Les commandes sont atomiques internes. Émettre plusieurs ensembles en même temps n'a pas d'effet malade, mis à part le dernier en étant celui qui bâtonnets.

Sans en savoir plus sur votre situation spécifique, je ne serais pas en mesure de vous conseiller de savoir si une erreur de cache était possible, mais je fais une généralisation que le cache doit être un premier niveau pour la recherche de données et non le seul niveau ; J'aurais toujours une base de données ou une autre source derrière le cache pour gérer toutes vos victimes de cache.


0 commentaires

2
votes

Voici le scénario: un site simple qui interroge un cache memcached. Le même cache est mis à jour par un travail par lots toutes les 10-15 minutes. Avec ce motif y a-t-il quelque chose qui pourrait mal tourner (par exemple, cache Mlle)?

Gardez à l'esprit que Memcached ne garantit pas que les données stockées dans elle resteront toujours dans le cache ( E.g , c'est une cache, pas une base de données). Si vous utilisez Memcached pour d'autres données, les résultats de cette requête peuvent être expulsés du cache avant que le travail de lot ne les réinsère.


0 commentaires

2
votes

Si vous recevez des données, ce seront les dernières données correctes que vous avez stockées.

Vous ne recevrez jamais la moitié d'une mise à jour, donc de cette perspective, c'est atomique. Chaque demande d'une clé donnée reviendra tout ou rien du tout pour cette clé.


0 commentaires