java - Hazelcast:如何在 hazelcast 中使用列表作为键

标签 java caching hazelcast

当我的java服务启动时,我从数据库中获取字符串列表,因此将它们缓存在hazelcast中,键是字符串列表,值(例如)100。可能有多个具有不同值的列表。这个想法是,下次当我的方法接收 String 作为参数时,我应该能够在 hazelcast 中查找它并返回值。

例如:

// These lists are populated from database
List<String> list_1 = new ArrayList<>();
list_1.add("A");
list_1.add("B");

List<String> list_2 = new ArrayList<>();
list_2.add("C");
list_2.add("D");

hazelcast.put("CACHE_KEY_1", list_1, 111);
hazelcast.put("CACHE_KEY_2", list_2, 222);

因此,当我的方法接收“C”作为参数时,hazelcast 应该能够检索该值,即

int value = hazelcast.get("CACHE_KEY_2", "C"); // should return 222

我尝试在文档中查找此功能,但无法了解如何实现此功能。

任何指示都会非常有帮助。

谢谢, 拉胡尔

最佳答案

如果要将任意字符串列表的值放入缓存中,并且有两个或多个不同的字符串列表,则需要将列表名称和字符串组合成一个键(称为组合键) ,例如:

 for (String s : list_2) {
   cache.put("CACHE_KEY_2;" + s, 222);
 }

现在您可以询问缓存,列表 2 是否包含字符串“C”并返回关联的整数值:

 cache.get("CACHE_KEY_2;C");

您还可以使用两个单独的缓存,而不是使用组合键。如果数据性质差异很大(不同大小、不同访问模式、过期时间等),这是更好的选择

顺便说一句:由于键必须是唯一的,因此它不是一个列表,而是一个集合。

您还可以为此构造一个对象,其中包含两个元素作为字段并定义适当的 equals() 和 hashCode() 方法,而不是为组合键附加两个字符串。

关于java - Hazelcast:如何在 hazelcast 中使用列表作为键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35061705/

相关文章:

java - TreeMap<Long, Long> 集合需要多少内存?

java - 在 JApplet 中顺序播放音频片段

RestSharp (monotouch) 中的 HTTP 缓存

caching - 如何在 TYPO3 中进行缓存预热

java - 如何将数据从bash脚本正确传递到java应用程序

java - 垃圾收集器对象的内存泄漏

javascript - 我怎么知道 $http 响应是否来自缓存 - Angular

服务器离线时 session 持久性 Hazelcast 客户端初始化

java - mockito 测试对抽象执行器的调用

java - Hazelcast:如果使用编程配置,则无法加入集群