2010-11-08 23 views
1

J'ai une liste de 1000 beans dont j'ai besoin de partager entre différents projets. J'utilise memcache à cette fin. Actuellement, la boucle est exécutée sur la liste complète et chaque bean est stocké dans memcache avec un identifiant memcache unique. Je me demandais, au lieu de mettre chaque bean en memcache indépendamment. Placez tous les beans dans hashmap avec la même clé que celle utilisée pour stocker les beans dans memcache, puis placez ce hashmap dans memcache. Cela me donnera-t-il une amélioration significative par rapport à la mise individuelle de chaque haricot dans memcached. Ou cela me causera-t-il des problèmes à cause de la grande taille de l'objet. Toute aide est appréciée.Client memcached basé sur Java, optimisation de la mise des données dans memcache

Répondre

2

Cela ne vous apportera aucun avantage particulier - il sera probablement plus lent sur la charge - la sérialisation est la sérialisation, et l'ajout d'un wrapper hashmap augmente simplement la quantité de données qui doit être désérialisée et peuplé. pour les récupérations, en supposant que la plupart des recherches sont désacralisées par la clé que vous voulez utiliser pour votre hashmap, vous aurez un temps de récupération beaucoup plus lent parce que vous allez tirer tout le graphique juste pour accéder à l'une de ses informations discrètes. Bien sûr, si les données sont entièrement statiques et que vous n'utilisez que memcached pour remplir les valeurs dans plusieurs JVM, vous pouvez le faire de cette façon et simplement conserver le hashmap dans une statique ... mais alors vous multipliez votre consommation de mémoire par le nombre de nœuds dans le cluster ...

0

J'ai fait quelques optimization work dans spymemcached qui l'aide à faire la bonne chose lors de l'encodage de fil.

Cela peut ou ne pas vous aider avec votre application. En général, il suffit de mesurer lorsque vous avez des questions sur la performance de votre application.