@InterfaceAudience.Private public class MemcachedBlockCache extends java.lang.Object implements BlockCache
| Modifier and Type | Field and Description |
|---|---|
static int |
MAX_SIZE |
static java.lang.String |
MEMCACHED_CONFIG_KEY |
static long |
MEMCACHED_DEFAULT_TIMEOUT |
static java.lang.String |
MEMCACHED_OPTIMEOUT_KEY |
static java.lang.String |
MEMCACHED_TIMEOUT_KEY |
| Constructor and Description |
|---|
MemcachedBlockCache(Configuration c) |
| Modifier and Type | Method and Description |
|---|---|
void |
cacheBlock(BlockCacheKey cacheKey,
Cacheable buf)
Add block to cache (defaults to not in-memory).
|
void |
cacheBlock(BlockCacheKey cacheKey,
Cacheable buf,
boolean inMemory,
boolean cacheDataInL1)
Add block to cache.
|
boolean |
evictBlock(BlockCacheKey cacheKey)
Evict block from cache.
|
int |
evictBlocksByHfileName(java.lang.String hfileName)
This method does nothing so that memcached can handle all evictions.
|
Cacheable |
getBlock(BlockCacheKey cacheKey,
boolean caching,
boolean repeat,
boolean updateCacheMetrics)
Fetch block from cache.
|
BlockCache[] |
getBlockCaches() |
long |
getBlockCount()
Returns the number of blocks currently cached in the block cache.
|
long |
getCurrentSize()
Returns the occupied size of the block cache, in bytes.
|
long |
getFreeSize()
Returns the free size of the block cache, in bytes.
|
CacheStats |
getStats()
Get the statistics for this block cache.
|
java.util.Iterator<CachedBlock> |
iterator() |
void |
shutdown()
Shutdown the cache.
|
long |
size()
Returns the total size of the block cache, in bytes.
|
public static final int MAX_SIZE
public static final java.lang.String MEMCACHED_CONFIG_KEY
public static final java.lang.String MEMCACHED_TIMEOUT_KEY
public static final java.lang.String MEMCACHED_OPTIMEOUT_KEY
public static final long MEMCACHED_DEFAULT_TIMEOUT
public MemcachedBlockCache(Configuration c)
throws java.io.IOException
java.io.IOExceptionpublic void cacheBlock(BlockCacheKey cacheKey, Cacheable buf, boolean inMemory, boolean cacheDataInL1)
BlockCachecacheBlock in interface BlockCachecacheKey - The block's cache key.buf - The block contents wrapped in a ByteBuffer.inMemory - Whether block should be treated as in-memorycacheDataInL1 - If multi-tier block cache deploy -- i.e. has an L1 and L2 tier -- then
if this flag is true, cache data blocks up in the L1 tier (meta blocks are probably being
cached in L1 already).public void cacheBlock(BlockCacheKey cacheKey, Cacheable buf)
BlockCachecacheBlock in interface BlockCachecacheKey - The block's cache key.buf - The object to cache.public Cacheable getBlock(BlockCacheKey cacheKey, boolean caching, boolean repeat, boolean updateCacheMetrics)
BlockCachegetBlock in interface BlockCachecacheKey - Block to fetch.caching - Whether this request has caching enabled (used for stats)repeat - Whether this is a repeat lookup for the same block
(used to avoid double counting cache misses when doing double-check locking)updateCacheMetrics - Whether to update cache metrics or notpublic boolean evictBlock(BlockCacheKey cacheKey)
BlockCacheevictBlock in interface BlockCachecacheKey - Block to evictpublic int evictBlocksByHfileName(java.lang.String hfileName)
evictBlocksByHfileName in interface BlockCachepublic CacheStats getStats()
BlockCachegetStats in interface BlockCachepublic void shutdown()
BlockCacheshutdown in interface BlockCachepublic long size()
BlockCachesize in interface BlockCachepublic long getFreeSize()
BlockCachegetFreeSize in interface BlockCachepublic long getCurrentSize()
BlockCachegetCurrentSize in interface BlockCachepublic long getBlockCount()
BlockCachegetBlockCount in interface BlockCachepublic java.util.Iterator<CachedBlock> iterator()
iterator in interface java.lang.Iterable<CachedBlock>iterator in interface BlockCachepublic BlockCache[] getBlockCaches()
getBlockCaches in interface BlockCache