java1234shiro_java1234 shiro 第0 .1课 缓存

pom.xml

org.apache.shiro

shiro-ehcache

1.2.4

spring-config.xml

ehcache.xml

maxEntriesLocalHeap="2000"

eternal="false"

timeToIdleSeconds="3600"

timeToLiveSeconds="0"

overflowToDisk="false"

statistics="true">

maxEntriesLocalHeap="2000"

eternal="false"

timeToIdleSeconds="10"

timeToLiveSeconds="0"

overflowToDisk="false"

statistics="true">

maxEntriesLocalHeap="2000"

eternal="false"

timeToIdleSeconds="20"

timeToLiveSeconds="0"

overflowToDisk="false"

statistics="true">

maxEntriesLocalHeap="2000"

eternal="false"

timeToIdleSeconds="3600"

timeToLiveSeconds="0"

overflowToDisk="false"

statistics="true">

ehcache.xml  说明: http://my.oschina.net/004/blog/214851

1.ehcache.xml配置文件详解

maxElementsInMemory="10000"

eternal="false"

timeToIdleSeconds="120"

timeToLiveSeconds="120"

overflowToDisk="true"

maxElementsOnDisk="1000000"

diskPersistent="false"

diskExpiryThreadIntervalSeconds="120"

memoryStoreEvictionPolicy="LRU"

/>

maxElementsInMemory="100"

eternal="false"

timeToIdleSeconds="100"

timeToLiveSeconds="100"

overflowToDisk="false"

/>

2.ehcache 包可用方法介绍:

创建CacheManager的方法:

方法一:

CacheManager manager = new CacheManager();

方法二:

CacheManager manager = new CacheManager("src/config/ehcache.xml");

方法三:

URL url = getClass().getResource("/anotherconfigurationname.xml");

CacheManager manager = new CacheManager(url);

方法四:

InputStream fis = new FileInputStream(new File("src/config/ehcache.xml").getAbsolutePath());

try {

CacheManager manager = new CacheManager(fis);

} finally {

fis.close();

}

获取cacheNames列表:

方法一:

CacheManager.create();

String[] cacheNames = CacheManager.getInstance().getCacheNames();

方法二:

CacheManager manager = new CacheManager();

String[] cacheNames = manager.getCacheNames();

方法三:

CacheManager manager1 = new CacheManager("src/config/ehcache1.xml");

CacheManager manager2 = new CacheManager("src/config/ehcache2.xml");

String[] cacheNamesForManager1 = manager1.getCacheNames();

String[] cacheNamesForManager2 = manager2.getCacheNames();

添加和删除缓存元素:

设置一个名为testCache 的新cache,属性为默认:

CacheManager singletonManager = CacheManager.create();

singletonManager.addCache("testCache");

Cache test = singletonManager.getCache("testCache");

设置一个名为testCache 的新cache,并定义其属性:

CacheManager singletonManager = CacheManager.create();

Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);

singletonManager.addCache(memoryOnlyCache);

Cache test = singletonManager.getCache("testCache");

Cache属性说明:

构造函数:

public Cache(String name,

int maxElementsInMemory,

boolean overflowToDisk,

boolean eternal,

long timeToLiveSeconds,

long timeToIdleSeconds)

参数说明:

name :元素名字。

maxElementsInMemory :设定内存中创建对象的最大值。

overflowToDisk : 设置当内存中缓存达到 maxInMemory 限制时元素是否可写到磁盘上。

eternal : 设置元素是否永久驻留。

timeToIdleSeconds : 设置某个元素消亡前的停顿时间。也就是在一个元素消亡之前,两次访问时间的最大时间间隔值。只能在元素不是永久驻留时有效。

timeToLiveSeconds : 设置某个元素消亡前的生存时间。也就是一个元素从构建到消亡的最大时间间隔值。只能在元素不是永久驻留时有效。

删除缓存元素:

CacheManager singletonManager = CacheManager.create();

singletonManager.removeCache("testCache");

关闭缓存管理器CacheManager

CacheManager.getInstance().shutdown();

对于缓存对象的操作:

放入一个简单的对象到缓存元素;

Cache cache = manager.getCache("testCache");

Element element = new Element("key1", "value1");

cache.put(element);

得到一个序列化后的对象属性值;

Cache cache = manager.getCache("testCache");

Element element = cache.get("key1");

Serializable value = element.getValue();

得到一个没有序列化后的对象属性值;

Cache cache = manager.getCache("testCache");

Element element = cache.get("key1");

Object value = element.getObjectValue();

删除一个对象从元素;

Cache cache = manager.getCache("testCache");

Element element = new Element("key1", "value1");

cache.remove("key1");

对于永固性磁盘存储,立即存储到磁盘:

Cache cache = manager.getCache("testCache");

cache.flush();

获得缓存大小:

得到缓存的对象数量;

Cache cache = manager.getCache("testCache");

int elementsInMemory = cache.getSize();

得到缓存对象占用内存的数量

Cache cache = manager.getCache("testCache");

long elementsInMemory = cache.getMemoryStoreSize();

得到缓存对对象占用磁盘的数量

Cache cache = manager.getCache("testCache");

long elementsInMemory = cache.getDiskStoreSize();

关于缓存的读取和丢失的记录:

得到缓存读取的命中次数;

Cache cache = manager.getCache("testCache");

int hits = cache.getHitCount();

得到内存中缓存读取的命中次数;

Cache cache = manager.getCache("testCache");

int hits = cache.getMemoryStoreHitCount();

得到磁盘中缓存读取的命中次数;

Cache cache = manager.getCache("testCache");

int hits = cache.getDiskStoreCount();

得到缓存读取的丢失次数;

Cache cache = manager.getCache("testCache");

int hits = cache.getMissCountNotFound();

得到缓存读取的已经被销毁的对象丢失次数;

Cache cache = manager.getCache("testCache");

int hits = cache.getMissCountExpired();

© 著作权归作者所有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值