欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用OSCache进行缓存对象

程序员文章站 2022-05-03 23:53:51
...
    1. package com.klstudio.cache;  

2.

3. import java.util.Date;

4.

5. import com.opensymphony.oscache.base.NeedsRefreshException;

6. import com.opensymphony.oscache.general.GeneralCacheAdministrator;

7.

8. public class BaseCache extends GeneralCacheAdministrator {

9. //过期时间(单位为秒);

10. private int refreshPeriod;

11. //关键字前缀字符;

12. private String keyPrefix;

13.

14. private static final long serialVersionUID = -4397192926052141162L;

15.

16. public BaseCache(String keyPrefix,int refreshPeriod){

17. super();

18. this.keyPrefix = keyPrefix;

19. this.refreshPeriod = refreshPeriod;

20. }

21. //添加被缓存的对象;

22. public void put(String key,Object value){

23. this.putInCache(this.keyPrefix+"_"+key,value);

24. }

25. //删除被缓存的对象;

26. public void remove(String key){

27. this.flushEntry(this.keyPrefix+"_"+key);

28. }

29. //删除所有被缓存的对象;

30. public void removeAll(Date date){

31. this.flushAll(date);

32. }

33.

34. public void removeAll(){

35. this.flushAll();

36. }

37. //获取被缓存的对象;

38. public Object get(String key) throws Exception{

39. try{

40. return this.getFromCache(this.keyPrefix+"_"+key,this.refreshPeriod);

41. } catch (NeedsRefreshException e) {

42. this.cancelUpdate(this.keyPrefix+"_"+key);

43. throw e;

44. }

45.

46. }

47.

48. }



view plainprint?

1. package com.klstudio;

2.

3. import com.klstudio.News;

4. import com.klstudio.cache.BaseCache;

5.

6. public class CacheManager {

7.

8. private BaseCache newsCache;

9.

10.

11. private static CacheManager instance;

12. private static Object lock = new Object();

13.

14. public CacheManager() {

15. //这个根据配置文件来,初始BaseCache而已;

16. newsCache = new BaseCache("news",1800);

17. }

18.

19. public static CacheManager getInstance(){

20. if (instance == null){

21. synchronized( lock ){

22. if (instance == null){

23. instance = new CacheManager();

24. }

25. }

26. }

27. return instance;

28. }

29.

30. public void putNews(News news) {

31. // TODO 自动生成方法存根

32. newsCache.put(news.getID(),news);

33. }

34.

35. public void removeNews(String newsID) {

36. // TODO 自动生成方法存根

37. newsCache.remove(newsID);

38. }

39.

40. public News getNews(String newsID) {

41. // TODO 自动生成方法存根

42. try {

43. return (News) newsCache.get(newsID);

44. } catch (Exception e) {

45. // TODO 自动生成 catch 块

46. System.out.println("getNews>>newsID["+newsID+"]>>"+e.getMessage());

47. News news = new News(newsID);

48. this.putNews(news);

49. return news;

50. }

51. }

52.

53. public void removeAllNews() {

54. // TODO 自动生成方法存根

55. newsCache.removeAll();

56. }

57.

58. }
相关标签: Cache