Nous utilisons un cluster de serveurs memcached à des fins de mise en cache, dans une production Django (Python), après avoir essayé cmemcache et python-memcache comme API. Le problème est sous forte concurrence, nous avons commencé à avoir des paires clé-valeur en double, c'est-à-dire que nous avons plusieurs valeurs pour une seule clé. Y a-t-il quelqu'un qui a eu la même situation et qu'est-ce qui tue? Puisque les serveurs memcached eux-mêmes ne communiquent pas avec chacun pour maintenir la singularité de la paire clé-valeur, cette tâche est laissée à la bibliothèque cliente, nous essayons donc de comprendre comment fonctionne cmemcache et python-memcache.Dupliquer les paires clé-valeur retournées par memcached
Répondre
Lequel est le plus gros problème: avoir des données redondantes ou obtenir plus d'un résultat pour une requête?
Si le premier est le problème, alors vous avez un problème de concurrence désagréable à résoudre sur vos mains.
Toutefois, si ce dernier problème est le problème, pourquoi ne pas simplement attribuer à chaque hôte qui stocke des valeurs dans memcache un identifiant unique, et le préfixer à n'importe quelle clé?
Le client est supposé déterminer quel serveur memcache possède une valeur en fonction de sa clé. Si vous utilisez deux clients différents (ou deux configurations différentes du même client), ils peuvent utiliser des algorithmes différents pour mapper une clé sur un serveur, envoyant ainsi des valeurs pour la même clé à deux serveurs différents. Vous pouvez passer à pylibmc ou python-libmemcached. Lorsque j'ai examiné les clients Python memcache l'année dernière, les deux clients que vous avez mentionnés étaient à la retraite ou en panne, ou les deux.