
alluxio.client.file.cache.ShadowCacheManager Maven / Gradle / Ivy
/*
* The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
* (the "License"). You may not use this work except in alluxio.shaded.client.com.liance with the License, which is
* available at www.apache.alluxio.shaded.client.org.licenses/LICENSE-2.0
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied, as more fully set forth in the License.
*
* See the NOTICE file distributed with this work for information regarding copyright ownership.
*/
package alluxio.client.file.cache;
import alluxio.client.quota.CacheScope;
import alluxio.conf.AlluxioConfiguration;
import alluxio.conf.PropertyKey;
/**
* The interface represents a shadow cache which supports put/read/delete/aging operations.
*/
public interface ShadowCacheManager {
/**
* @param conf the Alluxio configuration
* @return an instance of {@link ShadowCacheManager}
*/
static ShadowCacheManager create(AlluxioConfiguration conf) {
ShadowCacheType shadowCacheType =
conf.getEnum(PropertyKey.USER_CLIENT_CACHE_SHADOW_TYPE, ShadowCacheType.class);
switch (shadowCacheType) {
case CLOCK_CUCKOO_FILTER:
return new ClockCuckooShadowCacheManager(conf);
case MULTIPLE_BLOOM_FILTER:
default:
return new MultipleBloomShadowCacheManager(conf);
}
}
/**
* Puts a page with specified size and scope into the shadow cache manager.
*
* @param pageId page identifier
* @param size page size
* @param scope cache scope
* @return true if the put was successful, false otherwise
*/
boolean put(PageId pageId, int size, CacheScope scope);
/**
* Reads the entire page and refresh its access time if the queried page is found in the cache.
*
* @param pageId page identifier
* @param bytesToRead number of bytes to read in this page
* @param scope cache scope
* @return the number of bytes read, 0 if page is not found, -1 on errors
*/
int get(PageId pageId, int bytesToRead, CacheScope scope);
/**
* Deletes a page from the cache.
*
* @param pageId page identifier
* @return true if the page is successfully deleted, false otherwise
*/
boolean delete(PageId pageId);
/**
* Aging all the pages stored in this shadow cache. Specifically, aging operation removes all the
* stale pages which are not accessed for more than a sliding window.
*/
void aging();
/**
* Update working set size in number of pages and bytes. Suggest calling this method before
* getting the number of pages or bytes.
*/
void updateWorkingSetSize();
/**
* Stop the background aging task.
*/
void stopUpdate();
/**
* @return the number of pages in this shadow cache
*/
long getShadowCachePages();
/**
* @param scope cache scope
* @return the number of pages of given cache scope in this shadow cache
*/
long getShadowCachePages(CacheScope scope);
/**
* @return the number of bytes in this shadow cache
*/
long getShadowCacheBytes();
/**
* @param scope cache scope
* @return the number of bytes of given cache scope in this shadow cache
*/
long getShadowCacheBytes(CacheScope scope);
/**
* @return the number of pages read in this shadow cache
*/
long getShadowCachePageRead();
/**
* @return the number of pages hit in this shadow cache
*/
long getShadowCachePageHit();
/**
* @return the number of bytes read in this shadow cache
*/
long getShadowCacheByteRead();
/**
* @return the number of bytes hit in this shadow cache
*/
long getShadowCacheByteHit();
/**
* @return the false positive ratio
*/
double getFalsePositiveRatio();
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy