2010-03-19 2 views
12

J'ai actuellement environ 650 000 éléments dans memcached (430 Mo de mémoire utilisée) et le nombre continue d'augmenter. Il devrait dépasser 1 000 000 d'articles avant de devenir plat. Le ratio succès/manque actuel est de 25: 1, donc l'efficacité est plutôt bonne. Je voulais juste demander est un million d'articles dans memcached sur un seul serveur trop? Si non, combien est trop?Combien de clés sont trop nombreuses dans memcached?

+1

Vous pouvez ajouter un autre serveur et y installer memcache et le distribuer. C'est la beauté de tout cela, alors vous ne devrez pas vous inquiéter à ce sujet. – DarthVader

+1

Vous voyez? Si memcached est assez bon pour les fermes de serveurs comme le deathstar, c'est assez bon. – Xeoncross

Répondre

5

Vous pouvez mettre à niveau jusqu'à sur un seul serveur 64 bits de 48 Go et y ajouter jusqu'à 80 000 000 d'éléments. Ou vous pouvez mettre à l'échelle sur et acheter de nombreux serveurs 4 Go et mettre jusqu'à 2 400 000 articles sur chacun. Memcached fonctionne merveilleusement bien lorsque vous le distribuez sur plusieurs serveurs.

+0

@Jim, merci pour votre réponse, donc 2,400,000 est le nombre maximum d'articles que memcached peut stocker dans une boîte de 4 Go? – jack

+0

Désolé, c'est une estimation approximative basée sur vos 650k articles courants de 430MB. Mais les objets de 1m sont bien en deçà d'une telle machine. Vous devrez considérer ce qui se passe lorsque le * volume * des accès au cache augmente (le processeur ou le réseau devient-il un goulot d'étranglement?) Et aussi ce qui se passe si la machine memcached tombe en panne. Même si une seule machine peut gérer le cache et la charge, vous pouvez avoir besoin de deux ou plusieurs pour prendre en charge le basculement pour votre application. –

2

"Trop de" est effectivement beaucoup plus que vous avez lorsque vous n'avez plus de mémoire disponible pour consacrer à memcached.

Les données sont stockées dans une table de hachage géante, ce qui rend les recherches très proches de O (1). Au fur et à mesure que la table de hachage se développe, les collisions augmentent théoriquement, mais les implémentations de bonne qualité (et adaptées à la mémoire) du concept de table de hachage incluent généralement des moyens suffisants pour gérer ce problème avec très peu de ralentissement.

+0

Ne sont pas des tables de hachage O (log (n))? – user1130176

+0

@ user1130176 Pas dans la moyenne, non. O (log (n)) comportement à partir d'une table de hachage putatif suggérerait une implémentation cassée ou mal appliquée. Vous pensez peut-être à une autre structure également couramment utilisée pour implémenter des tableaux associatifs - par ex. une forme d'arbre. –

+0

La seule façon d'obtenir un temps constant serait une fonction déterministe, une à une de la clé à l'index d'accès aléatoire, à droite, est ce que fait memcached? Comment pourriez-vous parcourir 100M enregistrements en O (1) temps? J'aimerais apprendre comment cela est fait. – user1130176