咖啡因:记忆还是缓存构建器中的一大堆项目?

作为免责声明,我是caffeine的新手,正在探索这种轻量级方法。

我有一个从超过20K的简单ItemLOV两个属性对象组成的数据库中获取的集合。它们被拉,转换/转换为:

List<OutletsSelectBox> result = new ArrayList<>();
for(int i = 0; i<objlist.size(); i++){
   Object row = objlist.get(i);
   Object[] item = (Object[]) row;
   SkusSelectBox ssb = new SkusSelectBox();
   ssb.setItemId(String.valueOf(item[0].toString()));
   ssb.setItemName(String.valueOf(item[1].toString()));
   result.add(ssb);
}

我正在寻找的是将缓存的项目设置为我拥有的第三方组件的setItems方法。 setItems是一种公共无效方法,它允许在以下两种情况下解析三个选项:

  • public void setItems(final Collection<T> items)
  • public void setItems(Stream<T> streamOfItems)
  • public void setItems(@SuppressWarnings("unchecked") final T... items)

我注意到有类似的帖子:Simple Way to Cache a List of Collection in Java,但我不确定的是:

  1. 我的列表应该使用备忘录还是缓存生成器?
  2. 如果最好使用备忘录,则示例代码(在链接的发布中)使用的Supplier演员是来自java.util包还是Guava包?
  3. 是否需要将缓存重新设置为列表,然后再设置为 setItems方法?
  4. 对于memoizeWithExpiration方法,可以将上面的现有代码设为 转置/移动为委托参数,而不是空值 供应商集合还是我们需要在get()方法中进行? 可以将现有列表解析为委托,这很好,但是 虽然不是很确定。
zhuguanglu 回答:咖啡因:记忆还是缓存构建器中的一大堆项目?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3036445.html

大家都在问