缓存多个键

时间:2010-07-02 10:59:27

标签: java caching

我正在寻找使用多个密钥实现基于时间戳的缓存。我将使用除哈希表之外的数据结构。任何建议......

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

如果必须是三元组或四元组,建议使用什么架构。或者只是使用最佳实践数据结构也是足够的......

3 个答案:

答案 0 :(得分:2)

假设您只想检索给定所有键的缓存值,您只需创建一个CacheKey对象即可。地图/哈希表仍然是一个不错的候选人:

map.put(new CacheKey(keyA, keyB, keyC), value);
map.get(new CacheKey(keyA, keyB, keyC));
//etc...

确保在equals()课程中正确实施hashcode()CacheKey

但是,如果您打算大量使用此映射或散列表作为缓存,则应认真考虑重新使用现有的缓存库,除非您要处理诸如限制存储在映射中的条目数等事情,选择哪个当你达到限制时,条目被驱逐等。EhCache使用起来非常简单并且有许多配置选项 - 缓存可以有最大条目数或最大内存大小,缓存可以溢出到磁盘等。< / p>

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

只需使用普通的 MultiKeyMap 甚至装饰 LRU 映射:

MultiKeyMap cache = MultiKeyMap.decorate(new LRUMap());
cache.put(keyA, keyB, value);