图灵学院 java在线学习-mybatis的缓存类及作用
1.缓存的作用
mybatis缓存的作用就是提升查询的效率和减少数据库的压力。
2.mybatis的缓存类
mybatis缓存相关的类都在cache包里面,有个Cache的接口,默认实现是PerpetualCache类。当然,还有一些其他缓存类,是通过装饰器模式实现的。我们来看下包结构:
然后看下这些缓存类的作用:
PerpetualCache:基本缓存类,默认实现。
LruCache:LRU策略的缓存,作用是当缓存到达上限时候,删除最近最少使用的缓存。
FifoCache:FIFO策略的缓存,作用是当缓存到达上限时候,删除最先入队的缓存。
SoftCache:带清理策略的缓存,作用是通过JVM的软引用来实现缓存,当JVM内存不足时,会自动清理掉这些缓存。
WeakCache:带清理策略的缓存,作用是通过JVM的弱引用来实现缓存,当JVM内存不足时,会自动清理掉这些缓存。
LoggingCache:带日志功能的缓存。
SynchronizedCache:同步缓存,基于synchronized关键字实现,作用是解决并发问。
BlockingCache:阻塞缓存,通过在get/put方式中加锁,保证只有一个线程操作缓存,基于Java重入锁实现
SerializedCache:支持序列化的缓存,将对象序列化以后存到缓存中,取出时反序列化。
ScheduledCache:定时调度的缓存,在进行get/put/remove/getSize等操作前,判断缓存时间是否超过了设置的最长缓存时间(默认是一小时),如果是则清空缓存--即每隔一段时间清空一次缓存。这个有点像redis设置的超时时间。
TransactionalCache:事务缓存。