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

if (System.currentTimeMillis() - lastClear > clearInterval) {
clear();

主动删除:专门有一个job在后台定期去检查数据是否过期 , 如果过期则删除 , 这其实可以有效的处理冷数据;

5.线程安全

尽量用线程安全的类去存储数据 , 比如使用ConcurrentHashMap代替HashMap;或者提供相应的同步处理类 , 比如Mybatis提供了SynchronizedCache:

public synchronized void putObject(Object key Object object) {
...省略...


@Override
public synchronized Object getObject(Object key) {
...省略...

6.简明的接口

提供常用的get , put , remove , clear , getSize方法即可 , 比如Mybatis的Cache接口:

public interface Cache {
String getId();
void putObject(Object key Object value);
Object getObject(Object key);

推荐阅读