【问题标题】:Java: use concurrent hashmap or memcached cacheJava:使用并发 hashmap 或 memcached 缓存
【发布时间】:2015-01-12 20:24:26
【问题描述】:

我有一个简单的国家/地区哈希图,它是一个简单的静态最终不可修改的并发哈希图。 现在我们已经在我们的应用程序中实现了 memcached 缓存。 我的问题是,从缓存中获取值而不是这样一个简单的地图是否有益? 如果我将此地图移至缓存,我会获得或不会获得什么好处?

【问题讨论】:

  • 如果它是不可修改的,几乎肯定不是?
  • @louiswasserman 对不起,我没有收到你的问题
  • 如果它是一个静态的最终不可修改的东西,你甚至不需要ConcurrentHashMapCollections.unmodifiableMap(HashMap) 应该是你所需要的,其他任何东西都只是过于复杂了。
  • 如果它是不可修改的,你甚至不需要(也不应该使用)ConcurrentHashMap。如果所有操作都只是读取,您可以使用普通的旧HashMap。 (基本上正是路易斯所说的,我在之后发布了。)

标签: java hashmap memcached concurrenthashmap


【解决方案1】:

这实际上取决于数据的大小以及您为 JVM 分配了多少内存。

对于像一个国家的州这样的简单数据,在几百个条目内,一个简单的HashMap 就足够了,而使用memcache 是一种矫枉过正,实际上速度较慢。

如果是大量数据增长(通常为 10s/100s MB 或更大)并需要频繁访问,memcache(或任何其他持久缓存)将比内存存储更好。

【讨论】:

    【解决方案2】:

    它作为 HashMap 会快得多,因为它存储在内存中,并且可以通过 jvm 通过它的引用来完成查找。从 memcache 中查找需要额外的工作让处理器查找地图。

    【讨论】:

      【解决方案3】:

      如果您的应用程序仅托管在一台服务器上,那么您不需要 memcache 的分布式功能,而 HashMap 会非常快。 Stats

      但这不是 Web 应用程序的情况。约 99% 的 Web 应用程序将其托管在多台服务器上并希望使用分布式缓存,memcache 最适合这种情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-16
        • 2010-11-22
        • 1970-01-01
        • 2015-12-03
        • 2013-08-13
        • 2016-02-21
        • 2016-04-12
        相关资源
        最近更新 更多