【问题标题】:Infinispan cache preserving insertion orderInfinispan 缓存保留插入顺序
【发布时间】:2012-12-12 04:17:20
【问题描述】:

我正在使用 Infinispan 5.0.1 来满足我的缓存需求。

我遇到的问题是我需要按照放入缓存中的相同顺序从缓存中取回数据。 例如:

Cache<String, String> myCache = defaultCacheManager.getCache("myCache");
myCache.put("1", "ONE");
myCache.put("2", "TWO");
myCache.put("3", "THREE");
myCache.keySet();
Set<String> keySet = myCache.keySet();
for (String key : keySet) {
    System.out.println(myCache.get(key));
}

这应该打印出来: 一 二 三

【问题讨论】:

    标签: insertion infinispan


    【解决方案1】:

    为什么要打印一二三? keySet() 返回一个 Set,它是一个无序的集合。请参阅 Set 的 Javadocs,以了解其合同。

    【讨论】:

    • 现在你错了。 LinkedHashMap 在 JavaDoc 中说:“这个链表定义了迭代顺序,这通常是键插入映射的顺序(插入顺序)”。如果你不相信我,试试这个 sn-p: LinkedHashMap map = new LinkedHashMap(); map.put("1", "ONE"); map.put("2", "TWO"); map.put("3", "三"); Set keySet = map.keySet(); for (String key : keySet) { System.out.println(key + " = " + map.get(key)); }
    【解决方案2】:

    暂时我通过使用ConcurrentLinkedHashMap 解决了这个问题 而且效果很好。 不过,如果有人知道“如何在 Infinispan 中做到这一点”的原始问题的答案,我将不胜感激。

    【讨论】:

      猜你喜欢
      • 2012-03-24
      • 2010-10-14
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      相关资源
      最近更新 更多