首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有多个键的缓存

具有多个键的缓存
EN

Stack Overflow用户
提问于 2010-07-02 18:59:27
回答 3查看 3.6K关注 0票数 0

我期待实现一个基于时间戳的具有多个键的缓存。除了哈希表,我还会使用什么数据结构。任何建议..。

对于两个值,可以使用配对,幸运的是java (Un)没有配对。

如果必须是三元组或四元组,建议采用哪种架构。或者仅仅使用最佳实践的数据结构也是足够的……

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-07-02 19:35:58

假设您只想在给定所有键的情况下检索缓存值,则可以简单地创建一个CacheKey对象。Map/Hashtable在这里仍然是一个不错的候选者:

代码语言:javascript
运行
复制
map.put(new CacheKey(keyA, keyB, keyC), value);
map.get(new CacheKey(keyA, keyB, keyC));
//etc...

只需确保在CacheKey类中正确实现equals()hashcode()即可。

然而,如果你打算大量使用这个映射或哈希表作为缓存,你应该认真考虑重用现有的缓存库,除非你想处理一些事情,比如限制映射中存储的条目数量,当你达到限制时选择哪些条目被驱逐,等等。EhCache使用起来非常简单,并且有很多配置选项-缓存可以有最大数量的条目或最大内存大小,缓存可以溢出到磁盘,等等。

票数 3
EN

Stack Overflow用户

发布于 2010-07-02 19:03:28

创建一个哈希表,其中的值是对对象的引用,这样如果对象有多个键,则不必多次存储该对象。

幸运的是,这是Java中的默认设置。

票数 0
EN

Stack Overflow用户

发布于 2021-06-01 11:19:54

只需使用普通的MultiKeyMap或甚至装饰LRU map:

代码语言:javascript
运行
复制
MultiKeyMap cache = MultiKeyMap.decorate(new LRUMap());
cache.put(keyA, keyB, value);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3165098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档