Я работаю над приложением, в котором мне нужно создавать и часто получать доступ к тысячам файлов. По причинам, связанным с использованием дискового пространства, я хочу хранить только фиксированное количество этих файлов в любой момент времени. Например, файлы записываются в C: \ my-folder. Когда моя папка достигает 1000 файлов, если мне нужно сохранить новый файл, я бы хотел стереть файл LRU из моей папки. Возможно ли что-то подобное с помощью ehcache (или любого другого инструмента для кэширования)? Я думал, что могу использовать хранилище дисков в ehcache, но всякий раз, когда я вызываю get
в кеше, он смотрит только на ключи, которые находятся в памяти, а не на диске.
Некоторые фрагменты моего кода показаны здесь:
// create the cache
CacheManager cm = CacheManager.create();
String name = getName();
CacheConfiguration config = new CacheConfiguration(name, 1)
.maxElementsOnDisk(2000).diskPersistent(true)
.overflowToDisk(true).eternal(true).diskStorePath(name)
.memoryStoreEvictionPolicy(MemoryStoreEvictionPolicy.LRU);
Cache cache = new Cache(config);
cm.addCache(cache);
// I do a couple of puts
cache.put(new Element("key1", val1));
cache.put(new Element("key2", val2));
cache.flush();
// now key1 is no longer in the cache (since max memory size is 1), but I'd like to look on disk since I have set maxElementsOnDisk to 2000
Element el = cache.get("key1");
Спасибо
Jeff