我有 1000 个 bean 的列表,我需要在不同的项目之间共享它们。我为此目的使用内存缓存。目前,循环在完整列表上运行,每个 bean 都存储在具有唯一 memcache id 的 memcache 中。我想知道,而不是将每个 bean 独立地放入内存缓存中。将所有bean放入具有相同key的hashmap中,该key用于在memcache中存储bean,然后将这个hashmap放入memcache中。 与将每个 bean 单独放入 memcached 相比,这会给我带来任何重大改进吗?或者由于物体尺寸较大,这会给我带来任何麻烦吗? 如有任何帮助,我们将不胜感激。
最佳答案
它不会给你带来任何特别的好处——实际上加载速度可能会变慢——序列化就是序列化,在它周围添加一个 HashMap 包装器只会增加需要反序列化和填充的数据量。对于检索,假设大多数查找都被您要用于 HashMap 的键所破坏,您的检索时间将会慢得多,因为您将拉下整个图表只是为了获取其中一个谨慎的成员信息。
当然,如果数据完全是静态的,并且您只使用 memcached 来填充各种 JVM 中的值,您可以这样做,并以静态方式保留 HashMap ...但是这样您就会增加内存集群中节点数量的消耗...
关于基于Java的memcached客户端,优化将数据放入memcache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4125911/