gpt4 book ai didi

java - 用guava缓存维护多个索引(内存表)

转载 作者:太空狗 更新时间:2023-10-29 22:47:50 24 4
gpt4 key购买 nike

我正在尝试实现一个简化的内存缓存“表”,其中有两种类型的索引:主索引和辅助索引。

  • 主索引将单个键(主键)映射到唯一值(Map接口(interface))

  • 二级索引将单个键映射到值集合(Multimap 符合要求)

非常类似于 RDBMS 世界中的表,其中有多个查找列。有时您想按 PK 进行搜索,有时您希望返回基于公共(public)属性的行列表。现在,除了等号 (=) 之外不需要其他操作(即没有范围查询或模式匹配)。

将缓存语义添加到上述数据结构(逐出、数据填充/缓存加载器、刷新等),这正是我们所需要的。

我想请教您如何最好地解决给定问题。应该是 Cache per index 还是 Cache (for PK) + (synchronized) Multimap for secondary indexs?

非常感谢任何帮助。

问候。

最佳答案

您可以用 Guava com.google.common.cache.Cache 替换 Map。它不支持 Multimap 类型语义,所以你必须使用

Cache<K, ? extends List<V>> 

在那种情况下。

为了简单起见,我将“主索引”设为二级索引的子集 - 即,您有一个索引返回给定键的值列表,而主键仅返回具有单个值的列表.

关于java - 用guava缓存维护多个索引(内存表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10808436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com