如何设计一个本地缓存( 七 )


Object removeObject(Object key);
void clear();
int getSize();
ReadWriteLock getReadWriteLock();

再来看看guava提供的Cache接口 , 相对来说也是比较简洁的:

public interface Cache<K V> {
V getIfPresent(@CompatibleWith(\"K\") Object key);
V get(K key Callable<? extends V> loader) throws ExecutionException;
ImmutableMap<K V> getAllPresent(Iterable<?> keys);
void put(K key V value);
void putAll(Map<? extends K ? extends V> m);
void invalidate(@CompatibleWith(\"K\") Object key);
void invalidateAll(Iterable<?> keys);
void invalidateAll();
long size();
CacheStats stats();
ConcurrentMap<K V> asMap();
void cleanUp();

7.是否持久化

持久化的好处是重启之后可以再次加载文件中的数据 , 这样就起到类似热加载的功效;比如ehcache提供了是否持久化磁盘缓存的功能 , 将缓存数据存放在一个.data文件中;

推荐阅读