一、什么是缓存
一般来说,我们每次访问的数据是从数据库中查出来的,但是会有这样的情况,多个用户会对一张表进行反复的访问和操作,这样每次都去从数据库中查询相同的数据,很大程度上降低了效率,为了避免这种情况发生,出现了缓存,缓存就是把以前从数据库查询出来和使用过的对象保存在内存中,这个数据结构通常是类似HashMap,当以后使用某个对象的时候,先查询缓存中是或否有这个对象,如果有则使用缓存中的对象,如果没有,则去查询数据库,并将查询出来的对象保存在缓存中,以便下次使用。
二、一级缓存和二级缓存
一般来说,我们将从数据库取出的数据存储到session中,每个session,对同一个id进行两次load,不会发送给sql数据库,但是session关闭的时候,一级缓存就失效了。二级缓就是全局缓存。
缓存可以简单看出一个map,通过key在缓存里找value。
引用代码,分析cache的实现原理
<span style="font-family:KaiTi_GB2312;font-size:18px;">Dao
{
hashmap map = new map();
User getUser(integer id)
{
User user = map.get(id)
if(user == null)
{
user = session.get(id);
map.put(id,user);
}
return user;
}
}
Dao
{
Cache cache = null
setCache(Cache cache)
{
this.cache = cache
}
User getUser(int id)
{
if(cache!=null)
{
User user = cache.get(id);
if(user ==null)
{
user = session.get(id);
cache.put(id,user);
}
return user;
}
return session.get(id);
}
}
</span>