日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java oscache 使用_OScache的使用(Java对象)

發布時間:2025/3/20 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java oscache 使用_OScache的使用(Java对象) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天下午,想了好久,終于決定要用OSCache來緩存我的報表統計了,要不覺得效率很低。呵呵,當然我是選擇了opensymphony的OSCache,它可以緩存任何Java對象以及JSP程序,以下是今天下午的成果,寫了一個通用類,再在action里面緩存一下。試了一下,效果還算不錯。

package com.finegold.digimus.comm;

import com.opensymphony.oscache.base.persistence.CachePersistenceException;

/**

* @author 汪心利 2007-7-5

*@copyRight?WWW.FINEGOLD.COM.CN

*

*/

public interface Cache {

/**

* 根據key獲取cache里的對象

*

* @param key

* @return

* @throws CachePersistenceException

*/

Object get(Object key) throws CachePersistenceException;

/**

* 根據key以及time獲取cache里的對象,對應 inputOSCache(Object key, Object value, int

* i)方法添加進去的對象

*

* @param key

* @param time

* @return

* @throws CachePersistenceException

*/

Object get(Object key, int time) throws CachePersistenceException;

/**

* 將object添加cache

*

* @param key

* @param value

* @throws CachePersistenceException

*/

void inputOSCache(Object key, Object value)

throws CachePersistenceException;

/**

* 將object添加cache

*

* @param key

* @param value

* @param i

* @throws CachePersistenceException

*/

void inputOSCache(Object key, Object value, int i)

throws CachePersistenceException;

/**

* 根據key刪除object

*

* @param key

* @throws CachePersistenceException

*/

void remove(Object key) throws CachePersistenceException;

/**

* 清空cache

*

* @throws CachePersistenceException

*/

void clear() throws CachePersistenceException;

/**

* 銷毀cache

*

* @throws CachePersistenceException

*/

void destroy() throws CachePersistenceException;

/**

* 根據time 獲取key

*

* @param time

* @return

* @throws CachePersistenceException

*/

Object getkey(int time) throws CachePersistenceException;

}

接口的實現類:

package com.finegold.digimus.comm;

/**

* @author?BlueSKy_itwangxinli 2007-7-5

*@copyRight?WWW.FINEGOLD.COM.CN

*/

import java.util.Properties;

import org.apache.commons.lang.RandomStringUtils;

import com.opensymphony.oscache.base.EntryRefreshPolicy;

import com.opensymphony.oscache.base.NeedsRefreshException;

import com.opensymphony.oscache.base.persistence.CachePersistenceException;

import com.opensymphony.oscache.general.GeneralCacheAdministrator;

import com.opensymphony.oscache.web.filter.ExpiresRefreshPolicy;

/**

* OSCache 緩存共用類

*

* @author 汪心利 2007-7-5

*/

public class OSCache implements Cache {

/**

* 通用緩存管理類 administrator

*/

private GeneralCacheAdministrator cache;

private static OSCache instance;

public OSCache() {

this.cache = new GeneralCacheAdministrator();

}

/**

* 指定加載加載cache.propeties fiel 默認情況下加載classes目錄下的OScache.properties

*

* @param prop

*/

public OSCache(Properties prop) {

this.cache = new GeneralCacheAdministrator(prop);

}

/**

* 返回OSCache 的Instance 單態模式

*

* @return

*/

public synchronized static OSCache getInstance() {

if (instance == null) {

instance = new OSCache();

}

return instance;

}

/**

* 設置緩存容量 default value 請查看oscache配置文件,OSCache系統本身默認值unlimited

*

* @param cacheCapacity

*/

public void setCacheCapacity(int cacheCapacity) {

this.cache.setCacheCapacity(cacheCapacity);

}

/**

* 根據Key獲取cache里緩存的object

*

* @param key

*??????????? 查找關鍵字

*/

public Object get(Object key) throws CachePersistenceException {

try {

return this.cache.getFromCache(String.valueOf(key));

} catch (NeedsRefreshException e) {

cache.cancelUpdate(String.valueOf(key));

return null;

}

}

/**

* 根據key和time獲取緩存的object

*

* @param key

*??????????? 查找的key

* @param time

*??????????? (最準確的含義-->)How long the object can stay in cache in seconds

*/

public Object get(Object key, int time) throws CachePersistenceException {

try {

return this.cache.getFromCache(String.valueOf(key), time);

} catch (NeedsRefreshException e) {

cache.cancelUpdate(String.valueOf(key));

return null;

}

}

/**

* 盡量不要使用該方法 根據time 獲取key

*

* @param time

*??????????? 時間

*/

public Object getkey(int time) throws CachePersistenceException {

String key = RandomStringUtils.randomAlphanumeric(10);

try {

while (this.cache.getFromCache(key) != null) {

key = RandomStringUtils.randomAlphanumeric(10);

}

return key;

} catch (NeedsRefreshException e) {

return key;

}

}

/**

* 緩存對象

*/

public void inputOSCache(Object key, Object value)

throws CachePersistenceException {

this.cache.putInCache(String.valueOf(key), value);

}

/**

* 緩存對象

*

* @param key

*??????????? 緩存對象的key

* @param value

*??????????? 緩存對象的value

* @param n

*??????????? 緩存對象有效時間

*/

public void inputOSCache(Object key, Object value, int n)

throws CachePersistenceException {

EntryRefreshPolicy Policy = new ExpiresRefreshPolicy(n);

this.cache.putInCache(String.valueOf(key), value, Policy);

}

/**

* 根據key從cache里 刪除object

*

* @param 要刪除緩存對象的key

*/

public void remove(Object key) throws CachePersistenceException {

this.cache.flushEntry(String.valueOf(key));

}

/**

* 清空所有的緩存

*/

public void clear() throws CachePersistenceException {

this.cache.flushAll();

}

/**

* 銷毀緩存

*/

public void destroy() throws CachePersistenceException {

this.cache.destroy();

}

}

配置web.xml

CacheFilter

com.opensymphony.oscache.web.filter.CacheFilter

time

600

scope

session

總結

以上是生活随笔為你收集整理的java oscache 使用_OScache的使用(Java对象)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。