gpt4 book ai didi

java - 寻找一次读取的内存缓存

转载 作者:行者123 更新时间:2023-12-02 00:29:14 25 4
gpt4 key购买 nike

我正在寻找具有以下行为的内存缓存。

  • 在第一次访问或初始化后,它会立即读取要缓存的所有数据。例如。表格的所有行。
  • 一小时后,整个缓存将被清除,所有数据都会立即再次读取。
  • 可以根据需要清除缓存。

我知道如何实现这样的缓存,但是有人知道现有的库提供这样的缓存吗?

这是我对界面的想法。有缓存的元素

Element element = new Element(Object key, Object objectToCache);

加载器提供所有元素

Collection<Element> elements = myLoader.getElements();

最后还有缓存

public Cache {
public Cache(CacheLoader loader, int timeToReload) {
...
}

public Object getValueForKey(Object key {
...
}

...
}
<小时/>

一个解决方案是拥有一个包含单个条目的缓存,它是真实条目的 HashMap。通过这个解决方案,我可以使用现有的缓存,例如 EhcacheGuava Caches .

但是,在开始编写自己的库之前,我正在寻找现有代码。

最佳答案

您是否正在寻找某种分布式缓存并希望将初始负载分散到许多实例上,对吧?

Hazlecast 持久数据存储 API 始终值得一看。

Hazlecast Doc

Initialization on startup As of 1.9.3 MapLoader has the new MapLoader.loadAllKeys API. It is used for pre-populating the in-memory map when the map is first touched/used. If MapLoader.loadAllKeys returns NULL then nothing will be loaded. Your MapLoader.loadAllKeys implementation can return all or some of the keys. You may select and return only the hot keys, for instance. Also note that this is the fastest way of pre-populating the map as Hazelcast will optimize the loading process by having each node loading owned portion of the entries.

结合 hazelcast.initial.min.cluster.size 配置属性,您可以分配初始负载。

关于java - 寻找一次读取的内存缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9443295/

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