And*_*rei 16 java indexing caching guava
我正在尝试实现一个简化的内存缓存"表",其中有两种类型的索引:主要和次要.
主索引将单个键(主键)映射到唯一值(Map接口)
二级索引将单个键映射到值集合(Multimap符合条件)
非常类似于RDBMS世界中的表,其中一个表具有多个查找列.有时您希望通过PK进行搜索,有时会根据公共属性返回行列表.现在,除了equals(=)之外的其他操作没有必要(即没有范围查询或模式匹配).
将缓存语义添加到上述数据结构(逐出,数据填充/缓存加载,刷新等),这几乎是所需要的.
我想问一下你如何最好地解决问题的建议.应该是每个索引缓存还是缓存(对于PK)+(同步)二次索引的Multimap?
任何帮助深表感谢.
问候.
小智 2
您可以将 Map 替换为 Guava com.google.common.cache.Cache。它不支持 Multimap 类型语义,因此您必须使用
Cache<K, ? extends List<V>>
Run Code Online (Sandbox Code Playgroud)
在这种情况下。
为了简单起见,我将使“主索引”成为辅助索引的子集 - 即,您有一个索引,它返回给定键的值列表,而主键仅返回具有单个值的列表。